Bat指令碼 (二) for命令的使用

2021-08-27 18:30:13 字數 2720 閱讀 8685

for 命令是乙個比較複雜的命令,主要用於引數在指定的範圍內迴圈執行命令。

1) for in (set) do command [command-parameters]

%variable 指定乙個單一字母可替換的引數。變數名稱是區分大小寫的,所以 %i 不同於 %i

在批處理檔案中使用 for 命令時,指定變數建議用 %%variable而不要用 %variable。

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

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

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

2) 如果命令副檔名被啟用,下列額外的 for 命令格式會受到支援:

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

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

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

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

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

c.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)。

d.有或者沒有 usebackq 選項:

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

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

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

引數"options"為:

eol=c - 指乙個行注釋字元的結尾(就乙個,如「;」)

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

delims=*** - 指分隔符集。這個替換了空格和跳格鍵的預設分隔符集。

tokens=x,y,m-n - 指每行的哪乙個符號被傳遞到每個迭代的 for 本身。這會導致額外變數名稱的分配。

m-n格式為乙個範圍。通過 nth 符號指定 mth。

如果符號字串中的最後乙個字元星號,那麼額外的變數將在最後乙個符號解析之後分配並接受行的保留文字。

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

在作為命令執行乙個後引號的字串並且乙個單引號字元為文字字串命令並允許在 filenameset中使用雙引號擴起檔名稱。

3) sample:

1. 如下命令行會顯示當前目錄下所有以bat或者txt為副檔名的檔名。

for %%c in (*.bat *.txt) do (echo %%c)

a. 如下命令行會顯示當前目錄下所有包含有 e 或者 i 的目錄名。

for /d %%a in (*e* *i*) do echo %%a

b. 如下命令行會顯示 e盤test目錄 下所有以bat或者txt為副檔名的檔名。

for /r e:\test %%b in (*.txt *.bat) do echo %%b

for /r %%c in (*) do (echo %%c) :: 遍歷當前目錄下所有檔案

c. 如下命令行將產生序列 1 2 3 4 5

for /l %%c in (1,1,5) do echo %%c

d. 以下兩句,顯示當前的年月日和時間

for /f "tokens=1-3 delims=-/. " %%j in ('date /t') do echo %%j年%%k月%%l日

for /f "tokens=1,2 delims=: " %%j in ('time /t') do echo %%j時%%k分

e. 把記事本中的內容每一行前面去掉8個字元

setlocal enabledelayedexpansion

for /f %%i in (zhidian.txt) do (

set atmp=%%i

set atmp=!atmp:~8!

if =={} ( echo.) else echo !atmp!

):: 讀取記事本裡的內容(使用 delims 是為了把一行顯示全,否則會以空格為分隔符)

for /f "delims=" %%a in (zhidian.txt) do echo.%%a

4) continue 和 break

利用 goto 實現程式中常用的 continue 和 break 命令, 其實非常簡單

continue: 在 for 迴圈的最後一行寫上乙個標籤,跳轉到這位置即可

sample: (偽**)

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

... do command ...

if ... goto continue

if ... goto break

... do command ...

:continue

):break

bat指令碼 常見命令

如有錯誤,歡迎指出 學習站點 批指令碼中只支援行注釋。rem用於在批處理檔案中新增註解或說明,且該命令會輸出乙個換行 後緊跟乙個 或空格 製表符也可起到注釋的作用。echo用以顯示訊息和啟用或關閉命令回顯。使用不帶引數的echo將顯示當前回顯設定,使用echo on off 開啟或關閉回顯功能。顯示...

bat指令碼獲取時間命令

比如在windowscmd命令列視窗執行date命令後這個環境變數的值為 那麼如下的各個操作的意義如下 date 0,4 表示從左向右指標向右偏0位,然後從指標偏移到的位置開始提取4位字元,結果是2014 年的值 date 5,2 表示指標從左向右偏移5位,然後從偏移處開始提取2位字元,結果是03 ...

bat批處理指令碼幾個命令使用記錄

一 cmd.exe啟動引數說明 c d c 執行 string 指定的命令,執行完後停止,會退出。例如 echo off cmd c echo cd echo ddddd set 12345 pause cls後面的pause和cls也會執行,執行到最後則會退出當前的執行環境 雙擊執行方式 但當前環...