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

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

test.bat spa


@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修改以下: code

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 for循环

@echo off

set TEST_FILE=%~dp0/test_file.txt

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

查看for的帮助文档,能够看到"usebackq"的做用: class

相关文章
相关标签/搜索