如果文件夹不包含特定文件,则批处理文件删除该文件夹

如果文件夹不包含特定文件,则批处理文件删除该文件夹

我有一个文件夹,里面有很多子文件夹。我需要一个批处理文件来查看子文件夹列表并检查指定的文件是否存在。如果文件不存在,则可以删除子文件夹。

这需要在 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
  • 添加/qrd删除 Y/N 确认。

进一步阅读

相关内容