来看看:BAT批处置文件for轮回的基础格局
功能实在太强了,在配合exec参数或者通过管道重定向到xargs命令和grep命令,可以完成非常复杂的操作,如果同样的操作用图形界面的工具来完成,恐怕要多花十几陪的时间。一,基础格局
对一组文件中的每个文件实行某个特天命令。
FOR%variableIN(set)DOcommand
%variable指定一个单一字母可交换的参数。
(set)指定一个或一组文件。可使用通配符。
command指定对每一个文件实行的命令。
command-parameters
为特天命令指定参数或命令行开关。
在批处置程序中利用FOR命令时,指定变量请利用%%variable
而不要用%variable。变量称号是辨别巨细写的,以是%i分歧于%I.
参数:for有4个参数/d/l/r/f他们的感化鄙人面的例子中解说
二,参数/d
FOR/D%variableIN(set)DOcommand
假如会合包括通配符,则指定与目次名婚配,而不与文件名婚配。
比方:
@echooff
for/d%%iin(c:*)doecho%%i
pause
运转后,会把c盘根目次下的全体目次打印出来,不会打印文件
例子:
@echooff
for/d%%iin(???)doecho%%i
pause
会把以后目次下有目次名字只要1-3个字母的,就会显现出来,没有就不显现了
*号暗示恣意N个字符,而?只暗示恣意一个字符
三,参数/r
FOR/R[path]%variableIN(set)DOcommand
反省以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
该集暗示以增量情势从入手下手到停止的一个数字序列。因而,(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
FOR/F["options"]%variableIN("string")DOcommand
FOR/F["options"]%variableIN(command)DOcommand
带引号的字符串“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:源混乱等); 得到到草率的回答或者根本得不到任何Linux答案。越表现出在寻求帮助前为解决问题付出的努力,你越能得到实质性的帮助。 目前全球有超过一百多个Linux发行版本,在国内也能找到十几个常见版本。如何选择请根据你的需求和能力,RedhatLinux和DebianLinux是网络管理员的理想选择。 熟悉系统的基本操作,Linux的图形界面直观,操作简便,多加上机练习就可熟悉操作,在Linux下学习办公软件等常用软件。 掌握在Linux系统中安装软件,在安装Linux工具盘后大致日常所需的软件都会有,一般网络提供下载的软件都会有安装说明。 当然你不需搭建所有服务,可以慢慢来。自己多动手,不要非等着别人帮你解决问题。 任何一个叫做操作系统的东西都是这样子构成的:内核+用户界面+一般应用程序。 用户下达的命令解释给系统去执行,并将系统传回的信息再次解释给用户,估shell也称为命令解释器,有关命令的学习可参考论坛相关文章,精通英文也是学习Linux的关键。 下面看看一个让人无法回答的问题:“救命各位高手,向你们请教一些问题:如何在Linux下配制HTTP、FTP、Samba、DNS、DHCP、Sendmail服务器,谢谢”这样的问题。
页:
[1]