该代码运行良好。它从文件列表中删除文件:
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