Part 1:for /f
- 該指令用於對文件的讀取,猜測,f應該是file的簡寫吧
- 示例:
- 在bat文件的文件夾下,存放一個test.txt文件
- 擬打算一行一行讀出該文件的內容
@echo off
for /f %%i in (test.txt) do (echo %%i)
pause
- 部分代碼解讀
- in ( ),括號內為文件名,逐行讀出
運行結果
- 那麼當in ( )的括號內是一個命令,也就是循環是對該命令的執行結果進行的,如何處理?
- 只需將命令用單引號' '包圍起來即可
- 其中find "q" test.txt實現在文本文件中找到含有q的行內容
@echo off
for /f %%i in ('find "q" test.txt') do (echo %%i)
pause
運行結果
Part 2:for /f usebackq
- 當文件名中含有空格時,上面的代碼就沒法按要求運行
- 需增加usebackq,並且含有空格的文件名,需要整體使用雙引號包圍起來
@echo off
for /f usebackq %%i in ("te test.txt") do (echo %%i)
pause
運行結果
- 同樣的,如果in ( )的括號內是一個命令,也就是循環對該命令的執行結果進行的,如何處理?
- 區別在於將單引號改為``,該符號在鍵盤左上角
@echo off
for /f usebackq %%i in (`find "q" "t test.txt"`) do (echo %%i)
pause
Part 3:for /d
- 實現對文件夾名稱的循環
- 以下代碼實現了對當前文件夾下所有子文件夾名稱的輸出
- 結合*和?可以實現對文件夾名稱的過濾
@echo off
for /d %%i in (*) do (echo %%i)
pause
運行結果
- 如果想將當前文件夾下子文件夾的名稱全部輸出至文本文件
- 增加>>name.txt即可,記得是兩個>
- 大家可以試一下一個>是什麼效果
@echo off
for /d %%i in (*) do (echo %%i >>name.txt)
pause
運行結果
閱讀更多 excel技能寶典 的文章