我有一个文件夹,里面有很多子文件夹。我需要一个批处理文件来查看子文件夹列表并检查指定的文件是否存在。如果文件不存在,则可以删除子文件夹。
这需要在 Windows 7 工作站上运行。
我的 for /f 和 if exist 命令中的语法混淆了:
for /f /f%% in ('dir /b c:\test') do if exist "test.txt" rename c:\test\%% tobedeleted
我想我要么是想在一个论点中做太多的事情,要么是忽略了一些重要的东西。
答案1
如果该文件不存在,则可以删除子文件夹。
您需要类似以下内容:
echo off
setlocal enableDelayedExpansion
for /f %%i in ('dir /a:d /b /s c:\test') do (
set _dir=%%i
if exist !_dir!\test.txt (
rem do nothing
) else (
echo rd !_dir!
)
)
endlocal
笔记:
- 当您确定正确的目录将被删除时,删除
echo
之前的内容。rd
- 如果目录包含子目录,则添加
/s
到。rd
- 添加
/q
以rd
删除 Y/N 确认。