我正在尝试根据文本文件中的列表创建一个批处理文件来查找文件名(每行一个文件名没有扩展名)
批处理文件需要在文件夹+子文件夹中搜索并输出它未找到的文件到文本文件(Missing.txt)`
echo off
for /f "tokens=*" %%i in (Filelist.txt) DO echo %%i>InList.txt
(
IF NOT EXIST %%i (echo %%i>Missing.txt)
)
好的,现在InList.txt包含Filelist.txt中的所有文件名,无论它们是否存在 和Missing.txt在文件中有%i
好的,这就是我用来解决问题的代码
@echo off
for /f "tokens=*" %%i in (Filelist.txt) DO (
IF EXIST %%i.* (echo %%i>>InList.txt) ELSE echo %%i>>Missing.txt
)
我在Filelist.txt中的文件名没有扩展所以我在IF语句中的%% i之后添加。*但是如果你的文件列表有扩展名,你可以使用下面的解决方案
答案 0 :(得分:2)
您误解了for循环的格式。您还需要使用>>
附加到文本文件,而不是>
来写入文件。关闭原始逻辑,其中InList.txt
将包含所有文件,而Missing.txt
只会包含丢失的文件:
@echo off
for /f "tokens=*" %%i in (Filelist.txt) DO (
echo %%i>>InList.txt
IF NOT EXIST %%i (echo %%i>>Missing.txt)
)
但如果InList.txt
只应包含 执行 的文件:
@echo off
for /f "tokens=*" %%i in (Filelist.txt) DO (
IF EXIST %%i (echo %%i>>InList.txt) ELSE echo %%i>>Missing.txt
)