批处理命令从文件列表中删除文件

批处理命令从文件列表中删除文件

该代码运行良好。它从文件列表中删除文件:

For /f %%a in (file.lst) do del %%a

但是为什么下面的方法不起作用?它会删除.lst文件本身:

if exist file.lst (   
  set filelist="file.lst"    
) else (    
  set filelist="default.lst"    
)    
for /f %%b in (%filelist%) do del %%b    

这也不起作用:

for /f %%b in ("%filelist%") do del %%b        

file.lst 和 default.lst 包含如下内容:

d:\1.txt    
d:\2.txt    
d:\abcd.bmp

答案1

for /f像这样解释括号中的内容:

  • file- 文件逐行处理。
  • "text"- 仅处理文本。
  • 'command'- 命令的输出是逐行处理的。

您应该这样编辑批次:

if exist file.lst (
    set "filelist=file.lst"
) else (
    set "filelist=default.lst"
)
for /f %%b in (%filelist%) do del "%%b"

答案2

for删除列表文件时需要做什么?只需使用类似以下内容:

if exist filename del filename

相关内容