標籤:
如果有什麼命令不懂,可在CMD中輸入:name /?
一、基本格式
FOR %%variable IN (set) DO command [command-parameters]
%%variable 指定1個單1字母表示可替換的參數。
(set) 指定1個/1組檔案。可用萬用字元。
command 指定對每個檔案執行的命令。
command-parameters 為特定命令指定參數/命令列開關
參數:FOR有4個參數 /d /l /r /f
二、參數/d
FOR /D %%variable IN (set) DO command [command-parameters]
如果Set包含萬用字元,將對與Set相匹配的每個目錄(而不是指定目錄中的檔案組)執行指定的Command。
這個參數主要用於目錄搜尋,不會搜尋檔案:
@echo off
for /d %%i in (c:\*) do echo %%i
pause
運行會把C盤根目錄下的全部目錄名字列印出來,而檔案名稱字一個也不顯示!
@echo off
for /d %%i in (???) do echo %%i
pause
如果目前的目錄下有目錄名字只有1-3個字母的,就會顯示出來,沒有就不顯示了
/D參數只能顯示目前的目錄下的目錄名字!
三、參數/R
FOR /R [[drive:]path] %%variable IN (set) DO command [command-parameters]
檢查以[drive:]path為根的分類樹,指向每個目錄中的FOR語句。如果在/R後沒有指定目錄,則使用當前目錄。如果集僅為一個單點(.)字元,則枚舉該分類樹。
遞迴
/D 只能顯示當前路徑下的目錄名字,/R可把當前/指定路徑下的檔案名稱字全部讀取!
注意2點:
1、set中的檔案名稱如果含萬用字元,則列舉/R參數指定的目錄及其下面的所用子目錄中與set相符合的所有檔案,無相符檔案的目錄則不列舉。
2、set中為具體檔案名稱,不含萬用字元,則枚舉該分類樹(即列舉該目錄及其下面的所有子目錄),而不管set中的指定檔案是否存在。這與前面所說的單點(.)枚舉分類樹是一個道理,單點代表目前的目錄,也可視為一個檔案。
@echo off
for /r c:\ %%i in (*.exe) do echo %%i
pause
咱們把這個BAT儲存到D盤隨便哪裡執行,就會看到,他把C盤根目錄和每個目錄的子目錄下面全部的EXE檔案都列出來了
@echo off
for /r %%i in (*.exe) do @echo %%i
pause
以目前的目錄為搜尋路徑
@echo off
for /r c:\ %%i in (boot.ini) do echo %%i
pause
枚舉c盤所有目錄,為了只列舉boot.ini存在的目錄,可改成:
@echo off
for /r c:\ %%i in (boot.ini) do if exist %%i echo %%i
pause
用這條命令搜尋檔案真不錯...
DOS迴圈 for命令