|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
功能实在太强了,在配合exec参数或者通过管道重定向到xargs命令和grep命令,可以完成非常复杂的操作,如果同样的操作用图形界面的工具来完成,恐怕要多花十几陪的时间。
一,基础格局
对一组文件中的每个文件实行某个特天命令。
FOR%variableIN(set)DOcommand[command-parameters]
%variable指定一个单一字母可交换的参数。
(set)指定一个或一组文件。可使用通配符。
command指定对每一个文件实行的命令。
command-parameters
为特天命令指定参数或命令行开关。
在批处置程序中利用FOR命令时,指定变量请利用%%variable
而不要用%variable。变量称号是辨别巨细写的,以是%i分歧于%I.
参数:for有4个参数/d/l/r/f他们的感化鄙人面的例子中解说
二,参数/d
FOR/D%variableIN(set)DOcommand[command-parameters]
假如会合包括通配符,则指定与目次名婚配,而不与文件名婚配。
比方:
@echooff
for/d%%iin(c:*)doecho%%i
pause
运转后,会把c盘根目次下的全体目次打印出来,不会打印文件
例子:
@echooff
for/d%%iin(???)doecho%%i
pause
会把以后目次下有目次名字只要1-3个字母的,就会显现出来,没有就不显现了
*号暗示恣意N个字符,而?只暗示恣意一个字符
三,参数/r
FOR/R[[drive:]path]%variableIN(set)DOcommand[command-parameters]
反省以[drive:]path为根的目次树,指向每一个目次中的FOR语句。
假如在/R后没有指定目次标准,则利用以后目次。假如集仅为一个单点(.)字符,
则列举该目次树。
/r能够把以后大概你指定路径下的文件名全体读取,注重是文件名字,
注重2点:
1.set中的文件名假如含有通配符(?或*),则枚举/r参数指定的目次及其上面的一切子目次中和set符合合的一切文件,无符合文件的目次则不枚举
2.相反,假如set中为详细文件名,不含通配符,则枚举该目次树,而不论set中的指定文件是不是存在
例子:
@echooff
for/rd:%%iin(*.exe)doecho%%i
pause
将把d盘里以exe开头的文件全体列出来
@echooff
for/rd:%%iin(boot.ini)doecho%%i
pause
枚举d盘中存在boot.ini文件的目次
四。
FOR/L%variableIN(start,step,end)DOcommand[command-parameters]
该集暗示以增量情势从入手下手到停止的一个数字序列。因而,(1,1,5)将发生序列
12345,(5,-1,1)将发生序列(54321)
start为肇端值,stup为增量,end停止值,
例子:
@echooff
for/l%%iin(1,1,5)doecho%%i
pause
将会列出12345这几个值
@echooff
for/l%%iin(1,1,5)dostartcmd
pause
会翻开5个cmd的窗口
五,参数/F
迭代及文件剖析
利用文件剖析来处置命令输入,字符串及文件内容,利用迭代变量界说要反省的内容或字符串,并利用各类option选项来进一步
修正剖析体例,利用options令牌选项指定那些令牌应当作为迭代变量传送
注重:在没有利用令牌选项时,/f将只反省第一个令牌
文件剖析历程包含读取输入,字符串或文件内容,将其分红自力的文本行和在将每行剖析成零个或更多个令牌
让后经由过程设置为令牌的迭代变量值,挪用for轮回,默许情形下,/f传送每一个文件每行的第一个空缺分开符,跳过空行
命令格局:
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]
带引号的字符串“options”包含一个或多个
指定分歧剖析选项的关头字,这些关头字为:
eol=c指定一个正文字符的开头(就一个)
skip=n指在文件入手下手时疏忽的行数
delims=xxx指定分开符集,这个交换了空格和跳格键的默许分开符集
tokens=x,y,m-n指每行的哪个切合被传送到每一个迭代的for自己,这回却是分外称号的分派,m-n格局为一个局限
经由过程nth标记指定mth,假如标记字符串中的最好一个字符星号,那末分外的变量将在最好一个标记剖析以后分派并承受行的保存文本,
经由测试,该参数最多只能辨别31个字段
usebackq指定新语法已鄙人类情形中利用:
在作为命令实行一个后引号的字符串而且一个单
引号字符为笔墨字符串命令并同意在file-set
中利用双引号扩起文件称号。
例子:
@echooff
rem起首创建一时文件,用完删除>test.txt
echo;正文行,这个是一时文件,用完删除>text.txt
echo111213141516>>test.txt
echo21,22,23,24,25,26>>test.txt
echo31-32-33-34-35-36>>test.txt
for/F"eol=;tokens=1,3*delims=,-"%%iin(test.txt)doecho%%i%%j%%k
pause
deltext.txt
运转......
注释:
eol=;分号开首的行尾正文行
tokens=1,3-将每行第1段,第3段和残剩地段分离付与变量%%i,%%j,%%k
delims=,-(减号后有一空格)以逗号减号和空格为分开符,空格必需放在最初
例子:
@echooff
for/f"skip=4delims="%%iin(netuser)doecho%%i
pause
如许你本机全体账号名字就出来了把括号内的内容用两个单引号起来就暗示谁人当命令实行,for会前往命令的没行了局
,加谁人"delims="是为了让空格的行能正行显现出来,不加就默许只显现空格右边一列,应为默许的分开符为空格或叫跳格键
</p>
在学习初期,你一定会遇到很多困难,或者说各种困难,所以你最好先将你linux中的重要内容备份,因为,在你学习的过程中,很可能将系统搞废(eg:源混乱等); |
|