批處理for迴圈中的含空格的路徑怎樣賦值

時間 2021-08-11 18:10:18

1樓:亂世t逃犯

for迴圈中涉及到路徑問題,一般引用"%%~i"這樣的形式。

@echo off

for /f "delims=" %%a in ('dir /ad /b /s *laji*')  do rd /s /q "%%~a"

比如這個,批量刪除當前目錄下檔名含有laji字元的資料夾。(如果檔名有空格,會被for自動加上雙引號,而**裡本身又加上了一層雙引號,兩層引號會出錯,所以用%%~a先刪除再新增,則萬無一失。)

(%%~a能刪除路徑中自帶的雙引號)

2樓:匿名使用者

set "值= 含有 空格 的路徑 "

3樓:匿名使用者

windows批處理中,如果for迴圈處理帶空格檔案路徑,就會報打不到檔案錯誤。例如在批處理中讀取乙個檔案的內容並將檔案每行內容列印出來,指令碼如下:

test.bat

@echo offset test_file=%~dp0/test_file.txtfor /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 offset test_file=%~dp0/test_file.txtfor /f %%i in ("%test_file%") do echo %%i;

再次執行,會看到如下結果:

雖然沒有報錯,但這顯示不是我們想要的結果,for迴圈把"c:\test dir\test_file"當成了字串而不是檔案。所以,這樣也不能解決問題,還需要再進行修改。

test.bat

@echo offset test_file=%~dp0/test_file.txtfor /f "usebackq" %%i in ("%test_file%") do echo %%i;

再次執行,終於得到了正確結果:

檢視for的幫助文件,可以看到"usebackq"的作用:

請問for迴圈中的switch語句中case後用break還是continue??區別是什麼

鐮刀鐵錘遊騎兵 break是結束並跳出迴圈語句,continue是結束本次迴圈然後進入下次迴圈 迴圈的定義是程式段執行完了以後,再次判斷條件,若條件為真,則繼續執行該程式段。而在switch結構當中,只是該程式段執行完了之後,就繼續執行下面的語句。因此很明顯switch結構不是迴圈。迴圈有重複 反覆...

批處理命令start的問題,批處理命令start的問題 150

一諾千金丨 start 啟動單獨的 命令提示符 視窗來執行指定程式或命令。如果在沒有引數的情況下使用,start 將開啟第二個命令提示符視窗。語法 start title dpath i min max wait b filename parameters 引數 title 指定在 命令提示符 視窗...

批處理如何獲取命令的執行結果,批處理CMD,如何獲得start所呼叫程式的執行結果

99承情 編輯批處理檔案 在每一條命令後面加 chk.log 即可。當使用if errorlevel 值 cmmand 句式時,它含義是 如果返回的錯誤碼值等於值 的時候,將執行cmmand操作。一般上一條命令的執行結果返回的值只有兩個,成功 用0 表示 失敗 用 1 表示。可以用for命令將命令結...