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 ( ),括號內為文件名,逐行讀出

運行結果

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

  • 那麼當in ( )的括號內是一個命令,也就是循環是對該命令的執行結果進行的,如何處理?
  • 只需將命令用單引號' '包圍起來即可
  • 其中find "q" test.txt實現在文本文件中找到含有q的行內容
@echo off
for /f %%i in ('find "q" test.txt') do (echo %%i)
pause

運行結果

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

Part 2:for /f usebackq

  • 當文件名中含有空格時,上面的代碼就沒法按要求運行
  • 需增加usebackq,並且含有空格的文件名,需要整體使用雙引號包圍起來
@echo off
for /f usebackq %%i in ("te test.txt") do (echo %%i)
pause

運行結果

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

  • 同樣的,如果in ( )的括號內是一個命令,也就是循環對該命令的執行結果進行的,如何處理?
  • 區別在於將單引號改為``,該符號在鍵盤左上角
@echo off
for /f usebackq %%i in (`find "q" "t test.txt"`) do (echo %%i)
pause
bat-入門系列-02-循環結構2

Part 3:for /d

  • 實現對文件夾名稱的循環
  • 以下代碼實現了對當前文件夾下所有子文件夾名稱的輸出
  • 結合*和?可以實現對文件夾名稱的過濾
@echo off
for /d %%i in (*) do (echo %%i)
pause

運行結果

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

  • 如果想將當前文件夾下子文件夾的名稱全部輸出至文本文件
  • 增加>>name.txt即可,記得是兩個>
  • 大家可以試一下一個>是什麼效果
@echo off
for /d %%i in (*) do (echo %%i >>name.txt)
pause

運行結果

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


分享到:


相關文章: