① 批處理 for的詳細用法 for /l /f /d /r 不要ctrl V 的
/l /d /r 簡單 隨便找個教程就應該看明白
for /f 參數詳解
for命令 在dos命令中,不算最復雜的也應該算是相當復雜的了,
而for的參數中又以 /f 參數最為復雜,難懂和常用.
在剛學時確實費了我不少腦筋,下面就我個人的理解,給新手們通俗的講講,也好讓新手少走些彎路.
::例一:
:
for /f "skip=1 tokens=1,2* delims= " %%a in (a.txt) do echo %%a %%b %%c
pause先從引號內的東西講起,很多新手對這些難以理解,因為 for /? 翻譯的簡直是一塌糊塗.
skip=
tokens=
delims=
這三項是用的最多的,根據需要.可以不用,可以一起使用,也可以只使用一個或兩個.
但是不管使用幾個都要用引號將它們擴起來.當然不使用時,自然就不需要引號了.
skip=
for循環文本內容是以行為單位,從上至下進行的,skip=1意識就是跳過文本的第一行,即不循環第一行
那麼skip=2 自然就是跳過前兩行了,依次類推.........
delims=
先講這句
delims=後面的字元的意識是,將文本每一行的內容以delims=後面的字元分割成若干列.
假設a.txt某一行的內容是 111,222.333 444/555
我們用下面的語句
::例二:
:
for /f "tokens=1-5 delims=,./ " %%a in (a.txt) do echo %%a %%b %%c %%d %%e
pause顯示結果是 111 222 333 444 555
解釋:
意識就是把111,222.333 444/555以,./和空格(不分先後)分成了5列.注意代碼中/和"後面有個空格,
使用中要注意空格要放到最後,如"delims=,. /" 這樣就不行了.
那如果我們不使用逗號來分割會如何呢?如: "delims=./ "那麼就會分割成111,222 333 444 555
看出區別了嗎?delims=後面可以是多個字元,可以是空格,也可以什麼都沒有.
什麼都沒有代表什麼呢?就是不以任何東西為分割符,也是整行的內容了.
因為for默認是以,;和空格作分割符的,
所以一般要取得整行內容通常會用"delims="這樣的形式來取消for的默認分割符.
tokens=
tokens=1-5
1-5很好理解就1至5,前面我們用delims=後面的字元為分割符,將文本內容分成了多列,那麼你需要的是哪些列呢?
用tokens=可以很好幫你提取到.
還是以例二為例:
通過dilims=,./ 將文本分成了111 222 333 444 555 五列.
注意代碼中前面有個%%a 這里的%%a就是代表第一列,第二列就是%%b,第三列就是%%c 依此類推.....
那麼我們如果把echo %%a %%b %%c %%d %%e 改為 echo %%e %%d %%c %%b %%a 會如何呢?
當然.會顯示 555 444 333 222 111
如果是:echo %%b %%d 又會顯示什麼呢? 不用我說了吧!
若是第一個%%a把它改為%%i也是一樣,那麼第二列就是%%j...%%k...依此類推....
明白了?就是按英文字母的順序依此類推的.
這里我們用的是tokens=1-5但是在例一中,我們用的是tokens=1,2* 有什麼區別呢?
其實差不多-號代表從幾至幾而逗號代表單一的,如 tokens=1,5就是代表第一列和第五列,而不是1至5列.
*號代表剩下的所有的列.如:tokens=1,2*代表%%a為第一列,%%b為第二列,%%c代表後面所有的列.
for /f 不但可以循環文本內容還可以循環字元竄,如:
::例三:
:
for /f "tokens=1-3 delims=,./ " %%a in ("111,222.333 444/555") do echo %%a %%b %%c
pause只要將()里的字元串用引號擴起來,for就會把它當字元串來循環,而不是文本.
"delims=" 的含義是取消默認的分隔符,所以會把行上的內容照搬下來,而 "tokens=*" 表示獲取行上的所有內容
② 關於FOR命令的問題
1:for命令及變數 基本格式:
FOR /參數 %variable IN (set) DO command [command_parameters]
%variable:指定一個單一字母可替換的參數,如:%i ,而指定一個變數則用:%%i ,而調用變數時用:%i%
,變數是區分大小寫的(%i 不等於 %I)。
批處理每次能處理的變數從%0—%9共10個,其中%0默認給批處理文件名使用,%1默認為使用此批處理時輸入的的第一個值,同理:%2—%9指輸入的第2-9個值;例:net
use \\ip\ipc$ pass /user:user 中ip為%1,pass為%2 ,user為%3
(set):指定一個或一組文件,可使用通配符,如:(D:\user.txt)和(1 1 254)(1 -1 254),{ 「(1 1
254)」第一個"1"指起始值,第二個"1"指增長量,第三個"254"指結束值,即:從1到254;「(1 -1
254)」說明:即從254到1 }
command:指定對第個文件執行的命令,如:net use命令;如要執行多個命令時,命令這間加:& 來隔開
command_parameters:為特定命令指定參數或命令行開關
IN (set):指在(set)中取值;DO command :指執行command
參數:/L 指用增量形式{ (set)為增量形式時 };/F 指從文件中不斷取值,直到取完為止{
(set)為文件時,如(d:\pass.txt)時 }。
用法舉例:
@echo off
echo 用法格式:test.bat *.*.* > test.txt
for /L %%G in (1 1 254) do echo %1.%%G >>test.txt & net use \\%1.%%G
/user:***istrator | find "命令成功完成" >>test.txt
存為test.bat
說明:對指定的一個C類網段的254個IP依次試建立***istrator密碼為空的IPC$連接,如果成功就把該IP存在test.txt中。
/L指用增量形式(即從1-254或254-1);輸入的IP前面三位:*.*.*為批處理默認的 %1;%%G 為變數(ip的最後一位);&
用來隔開echo 和net use 這二個命令;| 指建立了ipc$後,在結果中用find查看是否有"命令成功完成"信息;%1.%%G
為完整的IP地址;(1 1 254) 指起始值,增長量,結止值。
@echo off
echo 用法格式:ok.bat ip
FOR /F %%i IN (D:\user.dic) DO smb.exe %1 %%i D:\pass.dic 200
存為:ok.exe
說明:輸入一個IP後,用字典文件d:\pass.dic來暴解d:\user.dic中的用戶密碼,直到文件中值取完為止。%%i為用戶名;%1為輸入的IP地址(默認)。
③ 批處理中for的用法和參數作用
語法看多了其實也起不了作用,一遇見實際問題就會出現問題,基本上還是不知道怎麼用,估計看了過幾天就忘了,最好是遇見什麼問題要用到for語句的時候再去深入的思考for語句的用法,只有遇見實際問題,才能理解for語句的妙用,簡單看下語法就行了,
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]
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
["options"]
%variable
In
(file-set)
Do
command
[command-parameters]
options
參數說明
eol=c
指一個行注釋字元的結尾(就一個)
skip=n
指在文件開始時忽略的行數。
delims=xxx
指分隔符集。這個替換了空格和跳格鍵的默認分隔符集。
tokens=x,y,m-n
指每行的哪一個符號被傳遞到每個迭代的
for
本身。這會導致額外變數名稱的分配。m-n格式為一個范圍。通過
nth
符號指定
mth。如果符號字元串中的最後一個字元星號,那麼額外的變數將在最後一個符號解析之後分配並接受行的保留文本。
一個簡單例子
Text.txt文件內容如下:
1,小明,80,85
2,小紅,90,95
#3,小強,90,95
For
/F
"tokens=2,*
delims=,
"
%%i
In
(Text.txt)
Do
(Echo
%%i
%%j)
這里分析
Text.txt
文件中的內容,每次讀取一行,每行以逗號分隔,取第2列
這樣
%%i
表示第二列的內容,%%j
就是星號中的內容,星號就是第二列後面的全部內容
For
/F
"eol=#
tokens=2,*
delims=,
"
%%i
In
(Text.txt)
Do
(Echo
%%i
%%j)
和上面相比少了第三行,因為第三行以井號開頭,eol=#
指定了以井號開頭的行為注釋行不分析
For
/F
"eol=#
skip=1
tokens=2,*
delims=,
"
%%i
In
(Text.txt)
Do
(Echo
%%i
%%j)
多了一個
skip=1,表示從跳過第一行,從第二行開始。
還可以這樣
For
/F
"tokens=1,2,3,*
delims=,
"
%%i
In
(Text.txt)
Do
(Echo
%%i
%%j
%%k
%%l)
可以不用參數
For
/F
%%i
In
(Text.txt)
Do
(Echo
%%i)
這樣,每次讀取一行內容,顯示出來。
某些範例可能有助:
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
分析邏輯;方法是,
用單引號將括弧之間的
filenameset
括起來。這樣,該字元
串會被當作一個文件中的一個單一輸入行。
最後,您可以用
FOR
/F
命令來分析命令的輸出。方法是,將
括弧之間的
filenameset
變成一個反括字元串。該字元串會
被當作命令行,傳遞到一個子
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
的大寫變數名
比較易讀,而且避免與不分大小寫的組合鍵混淆。
特別說明:
for
/f
%%i
in
(file)
do
(echo
%%i)
該命令處理的時候,file裡面的內容處理是
當每行有空格就截取空格前面的字元串,空格後面的就刪除了。
如果for語句有什麼不明白的,可以
hi
我。
④ for的七種用法是什麼
1、表示「當作、作為」。如:
I like some bread and milk for breakfast。
我喜歡把麵包和牛奶作為早餐。
2、表示理由或原因,意為「因為、由於」。如:
Thank you for helping me with my English。
謝謝你幫我學習英語。
3、表示動作的對象或接受者,意為「給……」、「對…… (而言)」。如:
Let me pick it up for you。
讓我為你撿起來。
4、表示時間、距離,意為「計、達」。如:
I usually do the running for an hour in the morning。
我早晨通常跑步一小時。
5、表示去向、目的,意為「向、往、取、買」等。如:
Let's go for a walk。
我們出去散步吧。
6、表示所屬關系或用途,意為「為、適於……的」。如:
It's time for school。
到上學的時間了。
7、表示「支持、贊成」。如:
Are you for this plan or against it?
你是支持還是反對這個計劃?
for短語介紹
1、account for是…的原因;解釋;占據;allow for考慮到;顧及
2、answer for 對…負責;apply for請求/申請
3、arrange for安排;ask for要求/要;找某人(ask for sb)
4、be dying/eager/thirty for...渴望;be to blame for... 應對...負責
5、call for:需要/要求;提倡;邀約/約請;(call for sb) care for喜歡,關心
6、change… for…用…交換…;go for襲擊;適用於;想要獲得;喜愛
⑤ for命令的用法(dos下)
在NT/2000/XP/2003下,鍵入cmd打開DOS窗口,鍵入help
for即可獲得for命令的幫助信息。
舉例:在WIN
XP下,
將文本文件A復製成B1,B2,...B20的命令(如果文件存在,強行覆蓋)如下:
1.
在WIN
XP下,
開始
-
運行CMD
/e:on
2.
進入到包含文本文件A的目錄
3.
鍵入下列命令
FOR
/L
%I
in
(1,1,20)
DO
/B/Y
A
B%I
註:
在WIN
XP下命令擴展預設是啟用的。
cmd
/e:on
啟用命令擴展;
cmd
/e:off
禁用命令擴展。
如果要在批文件(.bat)中使用FOR,則其中變數%I應寫成%%I
在純DOS(DOS6.22以下),
無能為力。參見For命令(DOS6.22以下)格式如下:
for
循環命令,只要條件符合,它將多次執行同一命令。
格式FOR
[%%f]
in
(集合)
DO
[命令]
只要參數f在指定的集合內,則條件成立,執行命令
參考文獻
-
DOS教程:
http://www.hongen.com/pc/newer/os/dos/dos0101.htm
⑥ C語言語言中FOR的用法
for 是一個循環語句,和while是類似的,for一般的用法有:
for(i=0;i<10;i++)
{
printf("hello world");
}
這里就是輸出10次hello world,為什麼是10次呢?因為首先i=0,第一次先判斷i<10是否成立,成立的話,就運行 printf("hello world");,然後回過來i++,再判斷i<10是否成立,成立的話再運行{ }內的程序,最後當i=9時,再回過來i++,i變為10,再判斷i<10已經不成立了,所以就結束for語句,i從0~9一共是10次,所以輸出10次hello world。while的話也類似的道理。
for也可以這樣用:for(int i=0;i<10;i++) ,這里的i的周期(或者生命)只存在與這個for語句內,當for語句結束後,這個i就不存在了,是個臨時變數,其他的話用法基本上就是這樣。
⑦ for的用法大全,求通俗易懂的講解
1.為了(目的)
They are workingfora better life.
他們在為更好的生活而工作。
She didn』t choose the job for money,but for more chances.
她選擇這個工作不是為了錢,而是為了更多的機會。
2.用於(表示作用)
This toy isforboys, notforgirls.
這玩具是給男孩玩的,而不是給女孩的。
We have a kind of special inkforyour pen.
我們有一種特殊的墨水用於你的鋼筆。
3.向,朝(方向)
Jane is leaving hereforLondon.
珍妮就要離開這里去倫敦。
She was headingforthe park.
她正走向公園。
4.代替;交換
Mr. Li will teachforyou.
李先生將代替你上課。
Could I give this orangeforthat pear?
我能用這個桔子換那個梨嗎?
5.對於(表示願望、愛好、特長等)
Mary has an artistic eyeforcolors.
瑪麗對著色有藝術眼光。
John had a sharp earformelody.
約翰對於旋律有很敏銳的聽覺。
6.贊成,擁護
We areforthis plan.
我們造成這個計劃。
Are youforor against this action?
你贊成還是反對這一行動?
7.因為
Thank youforyour help.
謝謝你的幫助。
The kids jumpedforjoy.
孩子們高興得跳了起來.
8.盡管,雖然
Forall his shortcomings, he is a nice man.
盡管他有這些缺點,他仍是一個很好的人。
Forall these defects,this place is better than most other places.
盡管有這些缺點,這個地方比其他大多數地方還是要好一些。
9.當作,作為
Don』t take othersforfools.
不要把別人當傻瓜。
I hold itforcertain.
我把那當作肯定的事。
10.就……而言,至於
He is rather tallforhis age.
就他的年齡來說他算是相當高的了。
That coat was too smallforme.
那件大衣對我來說太小了。
11.索取,要
The man askedfora cup of cool boiled water.
那了討了一杯涼開水。
Jane came backforher handbag.
珍妮回來取手袋。
12.(時間)為期;(距離)計
My uncle worked herefor40 years.
我叔叔在這工作過40年。
They walked slowlyfor10 kilometers.
他們慢慢地走了10公里。
⑧ for 循環語句的使用方法
以C語言為例for循環的一般形式為:
for(語句1 ; 語句2 ; 語句3 )
執行時,先執行一次語句1(注意只執行一次)
之後判斷語句2是否成立
1、如果成立執行循環體,之後執行語句3。再返回語句2判斷條件是否成立?成立執行循環體後再執行語句3,如此直到循環體不成立則跳出循環
2、如果語句2不成立,則不執行循環體也不執行語句3直接跳出循環。
(8)for命令的用法擴展閱讀:
for循環其他用法編輯
1、 for循環可以有多層嵌套。示例:
#include<stdio.h>
int main(void)
{
int i,j,k;
printf("ijk ");
for(i=0;i<2;i++)
for(j=0;j<2;j++)
for(k=0;k<2;k++)
printf("%d%d%d ",i,j,k);
return 0;
}
輸出結果為: i j k 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1
2、for循環中的變數生存周期為一次循環迭代。
#include<stdio.h>
int main(void)
{
int i;
for(i=0;i<9;i=i+1)
{
int a=i;
printf("%d ",a);
}
return 0;
}
C語句中變數必須聲明在前才能使用,在定義語句之前使用變數是不合法的。
⑨ 批處理中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 後沒有指定目錄,則使用當前
目錄。如果集僅為一個單點(.)字元,則枚舉該目錄樹。