① 批处理 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 后没有指定目录,则使用当前
目录。如果集仅为一个单点(.)字符,则枚举该目录树。