![每周一次删除文件夹内容的批处理文件,文件夹内的 .bat 文件除外](https://linux22.com/image/1615434/%E6%AF%8F%E5%91%A8%E4%B8%80%E6%AC%A1%E5%88%A0%E9%99%A4%E6%96%87%E4%BB%B6%E5%A4%B9%E5%86%85%E5%AE%B9%E7%9A%84%E6%89%B9%E5%A4%84%E7%90%86%E6%96%87%E4%BB%B6%EF%BC%8C%E6%96%87%E4%BB%B6%E5%A4%B9%E5%86%85%E7%9A%84%20.bat%20%E6%96%87%E4%BB%B6%E9%99%A4%E5%A4%96.png)
我见过很多与我的情况类似的情况,但找不到让我满意的(非常缺乏经验)。基本上,我有一个文件夹(E:\Downloads),文件夹被添加到其中,并且还包含一个批处理文件(Extractor.bat)。我想每周一次删除 E:\Downloads 中的所有文件夹和文件,但绝不会删除 Extractor.bat。非常感谢您的帮助!(脚本中每周一次的部分不是必需的,我知道我可以设置一个 Windows 任务在指定日期运行 bat 文件)。
Windows 10
答案1
看到那条Set DEBUG=echo
线了吗?
REM
当您确定此行正在执行您想要的操作时,请使用或禁用此行::
。此脚本存在时无害。如果您删除它,则无害。
这if /i not "%DownloadsDir%" == "%CD%"
句话源于我在年轻时犯的一个愚蠢的错误,将所有文件都毁在了错误的目录中。
另外..如果您在 cmd.exe 中运行它并且它会弄乱您当前的路径,您可以将其更改cd /d
为pushd
并将放在底部。popd
@echo off
SetLocal
Set DEBUG=echo
Set DownloadsDir=E:\Downloads
cd /d %DownloadsDir%
if /i not "%DownloadsDir%" == "%CD%" echo Bad directory! && goto :EOF
for /F "delims=" %%d in ('dir /ad /b') do %DEBUG% rd /s /q "%%d"
for %%f in (*.*) do if /i not "%%f"=="Extractor.bat" %DEBUG% del /F /Q "%%f"
EndLocal