bat 中 for 的使用 幫助文件 中文版

2021-10-03 12:39:24 字數 3977 閱讀 3468

■前言

因為工作電腦非中文,在這裡記下中午版,方便自己工作時檢視

■幫助文件

c:\test\temp\123>for /?

對一組檔案中的每乙個檔案執行某個特定命令。

for %variable in (set) do command [command-parameters]

%variable 指定乙個單一字母可替換的引數。

(set) 指定乙個或一組檔案。可以使用萬用字元。

command 指定對每個檔案執行的命令。

command-parameters

為特定命令指定引數或命令列開關。

在批處理程式中使用 for 命令時,指定變數請使用 %%variable

而不要用 %variable。變數名稱是區分大小寫的,所以 %i 不同於 %i.

如果啟用命令擴充套件,則會支援下列 for 命令的其他格式:

for /d %variable in (set) do command [command-parameters]

如果集中包含萬用字元,則指定與目錄名匹配,而不與檔名匹配。

for /r [[drive:]path] %variable in (set) do command [command-parameters]

檢查以 [drive:]path 為根的目錄樹,指向每個目錄中的 for 語句。

如果在 /r 後沒有指定目錄規範,則使用當前目錄。如果集僅為乙個單點(.)字元,

則列舉該目錄樹。

for /l %variable in (start,step,end) do command [command-parameters]

該集表示以增量形式從開始到結束的乙個數字序列。因此,(1,1,5)將產生序列

1 2 3 4 5,(5,-1,1)將產生序列(5 4 3 2 1)

for /f ["options"] %variable in (file-set) do command [command-parameters]

for /f ["options"] %variable in ("string") do command [command-parameters]

for /f ["options"] %variable in ('command') do command [command-parameters]

或者,如果有 usebackq 選項:

for /f ["options"] %variable in (file-set) do command [command-parameters]

for /f ["options"] %variable in ("string") do command [command-parameters]

for /f ["options"] %variable in ('command') do command [command-parameters]

fileset 為乙個或多個檔名。繼續到 fileset 中的下乙個檔案之前,

每份檔案都被開啟、讀取並經過處理。處理包括讀取檔案,將其分成一行行的文字,

然後將每行解析成零或更多的符號。然後用已找到的符號字串變數值呼叫 for 迴圈。

以預設方式,/f 通過每個檔案的每一行中分開的第乙個空白符號。跳過空白行。

你可通過指定可選 "options" 引數替代預設解析操作。這個帶引號的字串包括乙個

或多個指定不同解析選項的關鍵字。這些關鍵字為:

eol=c - 指乙個行注釋字元的結尾(就乙個)

skip=n - 指在檔案開始時忽略的行數。

delims=*** - 指分隔符集。這個替換了空格和製表符的

預設分隔符集。

tokens=x,y,m-n - 指每行的哪乙個符號被傳遞到每個迭代

的 for 本身。這會導致額外變數名稱的分配。m-n

格式為乙個範圍。通過 nth 符號指定 mth。如果

符號字串中的最後乙個字元星號,

那麼額外的變數將在最後乙個符號解析之後

分配並接受行的保留文字。

usebackq - 指定新語法已在下類情況中使用:

在作為命令執行乙個後引號的字串並且乙個單

引號字元為文字字串命令並允許在 file-set

中使用雙引號擴起檔名稱。

某些範例可能有助:

for /f "eol=; tokens=2,3* delims=, " %i in (myfile.txt) do @echo %i %j %k

會分析 myfile.txt 中的每一行,忽略以分號打頭的那些行,將

每行中的第二個和第三個符號傳遞給 for 函式體,用逗號和/或

空格分隔符號。請注意,此 for 函式體的語句引用 %i 來

獲得第二個符號,引用 %j 來獲得第三個符號,引用 %k

來獲得第三個符號後的所有剩餘符號。對於帶有空格的檔案

名,你需要用雙引號將檔名括起來。為了用這種方式來使

用雙引號,還需要使用 usebackq 選項,否則,雙引號會

被理解成是用作定義某個要分析的字串的。

%i 在 for 語句中顯式宣告,%j 和 %k 是通過

tokens= 選項隱式宣告的。可以通過 tokens= 一行

指定最多 26 個符號,只要不試圖宣告乙個高於字母 "z" 或

"z" 的變數。請記住,for 變數是單一字母、分大小寫和全域性的變數;

而且,不能同時使用超過 52 個。

還可以在相鄰字串上使用 for /f 分析邏輯,方法是,

用單引號將括號之間的 file-set 括起來。這樣,該字元

串會被當作乙個檔案中的乙個單一輸入行進行解析。

最後,可以用 for /f 命令來分析命令的輸出。方法是,將

括號之間的 file-set 變成乙個反括字串。該字串會

被當作命令列,傳遞到乙個子 cmd.exe,其輸出會**獲到

記憶體中,並被當作檔案分析。如以下例子所示:

for /f "usebackq delims==" %i in (`set`) do @echo %i

會列舉當前環境中的環境變數名稱。

另外,for 變數參照的替換已被增強。你現在可以使用下列

選項語法:

%~i - 刪除任何引號("),擴充套件 %i

%~fi - 將 %i 擴充套件到乙個完全合格的路徑名

%~di - 僅將 %i 擴充套件到乙個驅動器號

%~pi - 僅將 %i 擴充套件到乙個路徑

%~ni - 僅將 %i 擴充套件到乙個檔名

%~xi - 僅將 %i 擴充套件到乙個副檔名

%~si - 擴充套件的路徑只含有短名

%~ai - 將 %i 擴充套件到檔案的檔案屬性

%~ti - 將 %i 擴充套件到檔案的日期/時間

%~zi - 將 %i 擴充套件到檔案的大小

%~$path:i - 查詢列在路徑環境變數的目錄,並將 %i 擴充套件

到找到的第乙個完全合格的名稱。如果環境變數名

未被定義,或者沒有找到檔案,此組合鍵會擴充套件到

空字串

可以組合修飾符來得到多重結果:

%~dpi - 僅將 %i 擴充套件到乙個驅動器號和路徑

%~nxi - 僅將 %i 擴充套件到乙個檔名和副檔名

%~fsi - 僅將 %i 擴充套件到乙個帶有短名的完整路徑名

%~dp$path:i - 搜尋列在路徑環境變數的目錄,並將 %i 擴充套件

到找到的第乙個驅動器號和路徑。

%~ftzai - 將 %i 擴充套件到類似輸出線路的 dir

在以上例子中,%i 和 path 可用其他有效數值代替。%~ 語法

用乙個有效的 for 變數名終止。選取類似 %i 的大寫變數名

比較易讀,而且避免與不分大小寫的組合鍵混淆。

bat中ERRORLEVEL的使用介紹

bat中errorlevel的使用介紹 前言今天在bat 中看到了 以下的 set var errorlevel 搜尋整個程式,也沒有發現,定義了errorlevel這個變數 只是搜了到了類似下面的 if errorlevel 1 goto errorexit errorexit exit b 1 ...

如何通過查詢mysql中的文件尋找幫助

1.按照層次檢視幫助 如果不知道能夠提供什麼幫助時,可以用 contents 命令來顯示可供查詢的分類。對於列出的分類,可以使用 類別名稱 的方式針對使用者感興趣的內容做進一步的檢視。例如 想看看mysql中都支援哪些資料型別,可以執行 data types 命令 上面列出此版本支援的所有資料型別,...

如何往linux 系統中新增幫助文件

在新增幫助文件到系統之前,可以看到man無法找到libaio相關函式的幫助文件 root localhost man man io prep pwrite no manual entry for io fsync 為此,可以參考下面的命令進行新增 git clone cd libaio man ls...