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

相關文章
相關標籤/搜索