[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
回复 15# breeze_li


可能之前更新帖子的时候有过误操作,原始代码第26行少了一个左括号,已更新,你再试试。
http://bbs.bathome.net/thread-3503-1-1.html
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 16# Batcher
  1. set SrcDir=E:\asdf
  2. set DaysAgo=1
  3. for /f "skip=2 delims=" %%a in ('reg query "HKEY_CURRENT_USER\Control Panel\International" /v sShortDate') do (
  4.     set "RegDateOld=%%a"
  5. )
  6. set RegDateOld=%RegDateOld:~-8%
  7. reg add "HKEY_CURRENT_USER\Control Panel\International" /v sShortDate /t REG_SZ /d yyyy-M-d /f>nul
  8. >"%temp%\DstDate.vbs" echo LastDate=date()-%DaysAgo%
  9. >>"%temp%\DstDate.vbs" echo FmtDate=right(year(LastDate),4) ^& right("0" ^& month(LastDate),2) ^& right("0" ^& day(LastDate),2)
  10. >>"%temp%\DstDate.vbs" echo wscript.echo FmtDate
  11. for /f %%a in ('cscript /nologo "%temp%\DstDate.vbs"') do (
  12.     set "DstDate=%%a"
  13. )
  14. set DstDate=%DstDate:~0,4%-%DstDate:~4,2%-%DstDate:~6,2%
  15. echo %DstDate%
  16. for /d %%a in ("%SrcDir%\*.*") do (
  17.     REM 看看这几个变量的值
  18.     echo %SrcDir%
  19.     echo %%a
  20.     echo %%~ta
  21.     echo %DstDate%
  22.     if "%%~ta" leq "%DstDate%" (
  23.         if exist "%%a\" (
  24.             echo rd /s /q "%%a"
  25.         )
  26.     )
  27. )
  28. reg add "HKEY_CURRENT_USER\Control Panel\International" /v sShortDate /t REG_SZ /d %RegDateOld% /f>nul
复制代码
括号加了,现在不抱错了,但是好像没有执行删除操作

TOP

回复 17# breeze_li


我代码里面已经写明了,可能你没注意到:
  1. ::如果演示结果无误,把rd前面的echo去掉,即可实现真正删除。
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

本帖最后由 Nsqs 于 2017-8-8 19:21 编辑

回复 18# Batcher
删除文件
  1. PowerShell -c "Dir -File|ForEach{If(((Get-Date)-$_.LastWriteTime).Days -gt 30){Remove-Item $_.FullName}}"
复制代码
删除文件夹
  1. PowerShell -c "Dir -Dir|ForEach{If(((Get-Date)-$_.LastWriteTime).Days -gt 30){Remove-Item $_.FullName}}"
复制代码
一行流,当前文件夹内删除30天前的文件

09年的帖子,方法太老了,嵌套VBS怎么写的这么复杂,请参见复制7天前的文件

TOP

回复 19# Nsqs


    是的,太老了,那时候混编的方法还没出现或者不流行。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 18# Batcher

谢谢耐心帮助,我用你帖子更新的 BAT + PowerShell 实现了

TOP

forfiles也许更好?

TOP

回复 22# kingshui


    能否把完整代码发出来让楼主测试一下?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

本帖最后由 pcl_test 于 2017-8-18 12:49 编辑

回复 23# Batcher



楼主可参考,@isdir的值一定要大写。
详细用法forfiles /?
  1. D:\>forfiles /?
复制代码
  1. forfiles /d -2017/8/18 /c "cmd /c if @isdir==TRUE rd /s/q @file"
复制代码

TOP

返回列表