bat-入門系列-02-循環結構2

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

運行結果