`
shenmin1984
  • 浏览: 59993 次
  • 性别: Icon_minigender_2
  • 来自: 安徽
社区版块
存档分类
最新评论

批处理-for命令收集

阅读更多

一.for命令格式
对一组文件中的每个文件运行指定的命令
可以在批处理程序中或直接从命令提示符使用 for 命令

要在批处理程序中使用 for 命令,请使用以下语法:

for %%variable in (set) do command [command-parameters]
要在命令提示符下使用 for,请使用以下语法: (区别就是在于变量前的%)

for %variable in (set) do command [command-parameters]
参数:%%variable %variable代表可替换的参数。

for 命令使用在 set 中指定的每个文本字符串替换 %%variable(或 %variable),直到此命令(在 command-parameters 中指定)处理所有的文件为止。使用 %% variable 批处理程序中执行 for 命令。使用 % variable 通过命令提示符执行 for 命令。变量名区分大小写。
(set)
指定要用指定的命令处理的一个或多个文件或文本字符串。需要括号。

command
指定要在指定的 set 所包含的每个文件上执行的命令

command-parameters
指定要用于指定命令(如果指定的命令要使用任何参数或开关)的任何参数或开关。

二.for参数解析

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
很好理解就15,前面我们用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 又会显示什么呢? 不用我说了吧!222 444
若是第一个%%a把它改为%%i也是一样,那么第二列就是%%j...%%k...依此类推....
明白了?就是按英文字母的顺序依此类推的.
这里我们用的是tokens=1-5但是在例一中,我们用的是tokens=1,2* 有什么区别呢?
其实差不多-号代表从几至几而逗号代表单一的, tokens=1,5就是代表第一列和第五列,而不是15.
*
号代表剩下的所有的列.: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就会把它当字符串来循环,而不是文本.

usebackq

for/f "usebackq"表示它们包含的内容当作文件路径并分析其文件的内容;
在其它情况下表示其中的内容是一个完整的字符串,其中的>>><&|、空格等不再转义。

3for /f "usebackq delims==" %i in (`set`) do @echo %i

此时打印环境变量中的所有名称:

 

 

三./f/d/r

如果启用了命令扩展,将支持如下 for 命令的其他格式:
只限于目录

for /d [%% | %]variable in (set) docommand [command-parameters]
如果 set 包含通配符(* ?),则指定与目录名匹配,而不是文件名。

递归

for /r [[drive :]path] [%% | %]variable in (set) docommand [command-parameters]
进入根目录树[drive:]path,在树的每个目录中执行 for 语句。如果在 /r 后没有指定目录,则假定为当前目录。如果 set 只是一个句号 (.) 字符,则只列举目录树。

迭代

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 (filenameset) do command [command-parameters]
for /f ["options"] [%% | %]variable in ("literal string") do command[command-parameters]
for /f ["options"] [%% | %]variable in (‘command‘) do command [command-parameters]
或者,如果出现 usebackq 选项:

for /f ["options"] [%% | %]variable in (filenameset) do command [command-parameters]
for /f ["options"] [%% | %]variable in (‘literal string‘) do command [command-parameters]
for /f ["options"] [%% | %]variable in (`command`) docommand [command-parameters]

 

  • 大小: 71.8 KB
分享到:
评论

相关推荐

    cmd操作命令和linux命令大全收集

    CMD命令:开始-&gt;运行-&gt;键入cmd或command(在命令行里可以看到系统版本、文件系统版本) 命令大全 1. gpedit.msc-----组策略 2. sndrec32-------录音机 3. Nslookup-------IP地址侦测器 ,是一个 监测网络中 DNS...

    700个批处理打包下载.rar

    for.txt IE 界面批处理通讯录.cmd IE主页修改.bat IE修复.cmd install.CMD jacksi.bat list.ini lmod.com OptimizeXp.bat QQ精简.bat QQ精简.cmd readme.txt RUN.bat set.txt shell.bat SHELL.PIF Shell.reg svc2kxp...

    MaxDOS & Ghost8.2 7 For Vista/2008

    Uniso.bat 卸载上条命令加载的iso命令. M.bat MaxDOS工具箱的主菜单. Mouse.bat 鼠标驱动程序,如果需要鼠标操作请先运行. Mouse /q 退出支持. Ndisgo.bat 用于旧版本的命令行模式全盘网刻,格式: Ndisgo Xx ...

    MaxDOS 7 & Ghost8.2 For Win2k/XP/2K3

    本选项共包含了6个版本的nVIDIA网卡驱动,都是由Max一个一个收集并制作. 我们建议,所有使用nVIDIA主板芯片的用户,如果您使用NDIS无法认出您的网卡或者认出无 法正常网刻的话,请使用此六个选项一个一个测试是否可用. ...

    精通windows server 2008 命令行与powershell 电子书PDF单文件完整版

    10.1.3 for——执行特定命令 438 10.1.4 goto——批处理定向 440 10.1.5 If——批处理条件 440 10.1.6 echo——回显 442 10.1.7 rem——注释 443 10.1.8 pause——暂停 443 10.1.9 start——运行 444 10.1.10 choice...

    精通windows server 2008 命令行与powershell电子书PDF版(第一卷)

    Windows Server 2008系统内置功能强大的命令,可在命令行模式下完成所有可在Windows界面下执行的操作,尤其在执行脚本、批处理等操作时,更加方便快捷. 以实践为主,突出实用性、针对性和技术性.. 列举大量实例,...

    精通windows server 2008 命令行与powershell 电子书PDF版(第四卷)

    Windows Server 2008系统内置功能强大的命令,可在命令行模式下完成所有可在Windows界面下执行的操作,尤其在执行脚本、批处理等操作时,更加方便快捷. 以实践为主,突出实用性、针对性和技术性.. 列举大量实例,...

    精通windows server 2008 命令行与powershell电子书PDF版(第三卷)

    Windows Server 2008系统内置功能强大的命令,可在命令行模式下完成所有可在Windows界面下执行的操作,尤其在执行脚本、批处理等操作时,更加方便快捷. 以实践为主,突出实用性、针对性和技术性.. 列举大量实例,...

    精通windows server 2008 命令行与powershell电子书PDF版(第二卷)

    Windows Server 2008系统内置功能强大的命令,可在命令行模式下完成所有可在Windows界面下执行的操作,尤其在执行脚本、批处理等操作时,更加方便快捷. 以实践为主,突出实用性、针对性和技术性.. 列举大量实例,...

    iMacros为铬「iMacros for Chrome」-crx插件

    自动化web浏览器。记录和重播重复的工作。 版本10.0.5维护版本*修复:“另存为”对话框*修复:具有大写扩展名.IIM的宏不会显示在树中*...请参阅...我们还收集了一些其他关于使用iMacros for Chrome浏览器免费软件的提示...

    windowsnt 技术内幕

    使用Net Continue命令 使用Net File命令 使用Net Group命令 使用Net Help命令 使用Net Helpmsg命令 使用Net Local Group命令 使用Net Name命令 使用Net Pause命令 使用Net Print命令 使用Net Send命令 使用...

    光盘启动盘制作完全手册1.08

    用DOS批处理命令制作GHOST系统恢复盘 七十三.研究WINDOWS installer 参数全集 七十四.为Windows多功能系统维护光盘0810加入PPPOE拨号功能 七十五.BCDW启动盘制作 七十六.让你的Ghost XP盘更加自动化--自动选择计算机...

    javaSE代码实例

    4.5.3 复杂的for循环案例 55 4.5.4 用for实现其他循环 55 4.6 break中断语句 56 4.7 continue继续语句 57 4.8 小结 58 第5章 数组——以不变应万变的哲学 59 5.1 数组的声明及创建 59 5.1.1 声明...

Global site tag (gtag.js) - Google Analytics