1. 批處理中for語句的用法
如果命令擴展名被啟用,下列額外的 FOR 命令格式會受到
支持:
FOR /D %variable IN (set) DO command [command-parameters]
如果集中包含通配符,則指定與目錄名匹配,而不與文件
名匹配。
FOR /R [[drive:]path] %variable IN (set) DO command [command-
檢查以 [drive:]path 為根的目錄樹,指向每個目錄中的
FOR 語句。如果在 /R 後沒有指定目錄,則使用當前
目錄。如果集僅為一個單點(.)字元,則枚舉該目錄樹。
2. 批處理for語句使用
for命令in後面的括弧里的命令需要用單引號,而不是雙引號,雙引號只是用於字元串。
當然您想要全部txt文件,那麼dir命令還要加上/s這個參數。
所以完整,且正確的代碼應該是這樣的
@echo off & title 批量給txt文末加字元 By 依夢琴瑤
for /f "delims=" %%a in ('dir /a-d/s/b E:\*.txt') do (echo 1234)>>"%%~a"
pause
3. 批處理中for命令怎麼用
1. 復制當前目錄所有txt文件到f:\text目錄去(不包括子子目錄)
for /f "tokens=*" %%i in ('dir /b *.txt') do (
%%i f:\text
)
2. 復制e:\text所有txt文件到f:\text目錄(包括子目錄)
for /f "e:\text" %%i in (*.txt) do (
%%i f:\text
)
4. 批處理FOR命令,高手進……
WINXP下FOR命令已經變得非常強大了,用法有多種,由於網頁問題,下面的內容顯示後可能有變化。
一、FOR命令基本的功能是:對一組文件中的每一個文件執行某個特定命令。命令格式如下:
FOR%variableIN(set)DOcommand[command-parameters]
%variable指定一個單一字母可替換的參數。
(set)指定一個或一組文件。可以使用通配符。
command指定對每個文件執行的命令。
command-parameters
為特定命令指定參數或命令行開關。
在批處理文件中使用FOR命令時,指定變數請使用%%variable而不要用%variable。變數名稱是區分大小寫的,所以%i不同於%I.
二、如果命令擴展名被啟用,下列額外的FOR命令格式會受到支持:
FOR/D%variableIN(set)DOcommand[command-parameters]
/D含義:如果集中包含通配符,則指定與目錄名匹配,而不與文件名匹配。
FOR/R[[drive:]path]%variableIN(set)DOcommand[command-parameters]
/R含義:檢查以[drive:]path為根的目錄樹,指向每個目錄中的FOR語句。如果在/R後沒有指定目錄,則使用當前目錄。如果集僅為一個單點(.)字元,則枚舉該目錄樹。
FOR/L%variableIN(start,step,end)DOcommand[command-parameters]
/L含義:該集表示以增量形式從開始到結束的一個數字序列。因此,(1,1,5)將產生序列12345,(5,-1,1)將產生序列(54321)。
FOR/F["options"]%variableIN(file-set)DOcommand[command-parameters]
FOR/F["options"]%variableIN("string")DOcommand[command-parameters]
FOR/F["options"]%variableIN('command')DOcommand[command-parameters]
或者,如果有usebackq選項:
FOR/F["options"]%variableIN(file-set)DOcommand[command-parameters]
FOR/F["options"]%variableIN("string")DOcommand[command-parameters]
FOR/F["options"]%variableIN('command')DOcommand[command-parameters]
filenameset為一個或多個文件名。繼續到filenameset中的下一個文件之前,每份文件都已被打開、讀取並經過處理。處理包括讀取文件,將其分成一行行的文字,然後將每行解析成零或更多的符號。然後用已找到的符號字元串變數值調用For循環。以默認方式,/F通過每個文件的每一行中分開的第一個空白符號。跳過空白行。您可通過指定可選"options"參數替代默認解析操作。這個帶引號的字元串包括一個或多個指定不同解析選項的關鍵字。這些關鍵字為:
eol=c-指一個行注釋字元的結尾(就一個)
skip=n-指在文件開始時忽略的行數。
delims=xxx-指分隔符集。這個替換了空格和跳格鍵的默認分隔符集。
tokens=x,y,m-n-指每行的哪一個符號被傳遞到每個迭代的for本身。這會導致額外變數名稱的分配。m-n格式為一個范圍。通過nth符號指定mth。如果符號字元串中的最後一個字元星號,那麼額外的變數將在最後一個符號解析之後分配並接受行的保留文本。
usebackq-指定新語法已在下類情況中使用:在作為命令執行一個後引號的字元串並且一個單引號字元為文字字元串命令並允許在filenameset中使用雙引號擴起文件名稱。
某些範例可能有助:
FOR/F"eol=;tokens=2,3*delims=,"%iin(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分析邏輯;方法是,用單引號將括弧之間的filenameset括起來。這樣,該字元串會被當作一個文件中的一個單一輸入行。
最後,您可以用FOR/F命令來分析命令的輸出。方法是,將括弧之間的filenameset變成一個反括字元串。該字元串會被當作命令行,傳遞到一個子CMD.EXE,其輸出會被抓進內存,並被當作文件分析。因此,以下例子:
FOR/F"usebackqdelims=="%iIN(`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的大寫變數名比較易讀,而且避免與不分大小寫的組合鍵混淆。
補充:
上面不止一個例子。
5. 批處理中for in do 到底什麼意思,感覺千變萬化的
簡單點說,就是先用for給定好一些參數,然後讀取或執行in後面括弧裡面的命令或文本,獲取到內容後,賦值給for給定的那些參數,然後交給do去執行後續的相關操作。
至於千變萬化,那就是因為有不同的操作,所以一直在變化。一旦您能學會for,那麼批處理技術也算可以了。