Windows批处理脚本for循环处理带空格文件路径

原创
2014/04/23 13:45
阅读数 4.6K

Windows批处理中,如果for循环处理带空格文件路径,就会报打不到文件错误。例如在批处理中读取一个文件的内容并将文件每行内容打印出来,脚本如下:

test.bat


@echo off

set TEST_FILE=%~dp0/test_file.txt

for /f %%i in (%TEST_FILE%) do echo %%i;
test_file.txt内容随意,将test.bat和test_file.txt放到"C:\test dir"目录下,这时运行脚本就会报如下错误:


这时,我们首先想到的就是用引号把文件路径%TEST_FILE%包上,将test.bat修改如下:

test.bat


@echo off

set TEST_FILE=%~dp0/test_file.txt

for /f %%i in ("%TEST_FILE%") do echo %%i;
再次运行,会看到如下结果:


虽然没有报错,但这显示不是我们想要的结果,for循环把"C:\test dir\test_file"当成了字符串而不是文件。所以,这样也不能解决问题,还需要再进行修改。

test.bat

@echo off

set TEST_FILE=%~dp0/test_file.txt

for /f "usebackq" %%i in ("%TEST_FILE%") do echo %%i;
再次运行,终于得到了正确结果:

查看for的帮助文档,可以看到"usebackq"的作用:

展开阅读全文
打赏
0
5 收藏
分享
加载中
更多评论
打赏
0 评论
5 收藏
0
分享
返回顶部
顶部