[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
本帖最后由 hfxiang 于 2022-11-28 09:57 编辑
  1. forfiles /p "E:\备份文件" /s /m *.* /d -30 /c "cmd /c if @isdir==TRUE rd /s/q @path"
复制代码

TOP

回复 4# 0475


   
修订后的脚本如下,请测试
  1. @echo off
  2. @rem 保存为ANSI格式
  3. set "SrcDir=E:\0006\222"
  4. set "DaysAgo=7"
  5. pushd "%SrcDir%"
  6. forfiles /p "%SrcDir%" /s /m *.* /d -%DaysAgo% /c "cmd /c if @isdir==FALSE del @path" >nul 2>&1
  7. setlocal enabledelayedexpansion
  8. for /f "delims=" %%a in ('dir/b/s/ad^|sort/r') do (
  9. set "Empty_Folder="
  10. for /f "delims=" %%b in ('dir/a/b "%%~a"') do set "Empty_Folder=%%~b"
  11. if "!Empty_Folder!." equ "." rd/q/s "%%~a">nul 2>&1
  12. )
  13. endlocal
  14. popd
复制代码

TOP

本帖最后由 hfxiang 于 2022-12-2 11:26 编辑

回复 9# xiaoyuwxz


   
如果不介意第3方工具find64.exe( http://bcn.bathome.net/tool/find64.exe
可用如下脚本实现:
  1. @echo off
  2. @rem 保存为ANSI格式
  3. set "SrcDir=G:\文件备份"
  4. set "DaysAgo=30"
  5. pushd "%SrcDir%"
  6. find64 -type f -ctime +%DaysAgo% -delete
  7. find64 -type d -empty -delete
  8. popd
复制代码

TOP

回复 17# xiaoyuwxz


最初没有完全理解题意 ,现在知道了 。以下方法应该完全满足要求,只是稍为复杂了些
  1. @echo off & setlocal enabledelayedexpansion
  2. call :GetDate y m d
  3. call :DateToDays %y% %m% %d% days1
  4. @for /f "tokens=1-3 delims=-" %%a in ('dir /b/ad') do (
  5. call :DateToDays %%a %%b %%c days2
  6. set/a days=days1-days2
  7. if !days! GEQ 30 rd /q /s "%%~fa-%%b-%%c"
  8. )
  9. endlocal
  10. exit/b
  11. :DateToDays %yy% %mm% %dd% days
  12. setlocal ENABLEEXTENSIONS
  13. set yy=%1&set mm=%2&set dd=%3
  14. if 1%yy% LSS 200 if 1%yy% LSS 170 (set yy=20%yy%) else (set yy=19%yy%)
  15. set /a dd=100%dd%%%100,mm=100%mm%%%100
  16. set /a z=14-mm,z/=12,y=yy+4800-z,m=mm+12*z-3,j=153*m+2
  17. set /a j=j/5+dd+y*365+y/4-y/100+y/400-2472633
  18. endlocal&set %4=%j%&goto :EOF
  19. :GetDate yyyy mm dd
  20. setlocal ENABLEEXTENSIONS
  21. set "first="
  22. for /f "tokens=1-3 delims=.-/ " %%a in ('date/t') do (
  23. if not defined first set first=1&set yy=%%a&set mm=%%b&set dd=%%c)
  24. endlocal&set %1=%yy%&set %2=%mm%&set %3=%dd%&goto :EOF
复制代码

TOP

返回列表