Cha*_*oth 3 windows cmd batch-file batch-processing
我有一个文本文件列表,我想生成一个不存在的文件的报告.我尝试使用以下代码创建批处理文件,但它不适用于在其路径中有空格的任何文件:
FOR /F %%f IN (filelist.txt) DO (IF EXIST %%f (ECHO %%f exists) ELSE (ECHO %%f doesn't exist >> C:\doesntexist.txt ))
Run Code Online (Sandbox Code Playgroud)
在我的输出文件中,我收到一个错误,如"C:\ Documents not exists",表明它没有解析完整的文件名.
如何解决这个问题,以便我可以检查所有文件,即使它的路径中有空格?
只要有可能字符串可能包含像空格一样的分隔符,您需要 "enclose that string in quotes"
for /f 标记它在分隔符上默认接收的数据,因此第一个指定的标记被分配给元变量(%%f在您的情况下),下一个%%g等等.
您可以使用命令修饰符控制多少令牌和分隔符以及其他解析特征(来自提示,请参阅for /?)
在你的情况下,你只需要一个没有分隔符的标记(默认是1个标记和分隔符= 分隔符)所以
FOR /F "delims=" %%f IN (filelist.txt) DO (IF EXIST "%%f" (ECHO %%f exists) ELSE (ECHO %%f doesn't exist >> C:\doesntexist.txt ))
Run Code Online (Sandbox Code Playgroud)
如果filelist.txt包含空格,则会出现一些额外的复杂情况.在那种情况下,你需要
FOR /F "usebackqdelims=" %%f IN ("filelist.txt") DO (IF EXIST "%%f" (ECHO %%f exists) ELSE (ECHO %%f doesn't exist >> C:\doesntexist.txt ))
Run Code Online (Sandbox Code Playgroud)
出于在上述文件中"解释"的原因for /?.
| 归档时间: |
|
| 查看次数: |
6829 次 |
| 最近记录: |