在cmd窗口输入for /?后的原文,被我自己“翻译”了一下,更像人话了。

推荐去https://www.cnblogs.com/cbugs/p/8992059.html这篇部落格里去看看,讲的更好。

在cmd窗口输入for /?后

原文“翻译”

对一组文件中的每一个文件执行某个特定命令。

基本格式:

FOR %variable IN (set) DO command [command-parameters]

指令

含义

%variable

指定一个单一字母可替换的参数。

(set)

指定一个或一组文件。可以使用通配符。

command

指定对每个文件执行的命令。

command-parameters

为特定命令指定参数或命令行开关。

注意:

在批处理程序中使用 FOR 命令时,指定变量请使用 %%variablem,而不要用 %variable。

此外,变量名称是区分大小写的,所以 %i 不同于 %I.

FOR 命令支持以下形式:

/D 目录

FOR /D %variable IN (set) DO command [command-parameters]

只搜索当前目录而非文件,可以指定通配符。

/R 递归

FOR /R [[drive:]path] %variable IN (set) DO command [command-parameters]

以 [drive:]path 为根,对每个目录执行FOR语句。

如果在 /R 后没有指定目录规范,则使用当前目录。

如果集仅为一个单点(.)字符,则枚举该目录树。

/L 增量序列

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)

/F 文本、命令分析

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]

fileset 解析一个或多个文件名。

String 解析字符串

conmmand 解析一个命令的结果,可以和tokens连用以用来获取制定命令结果的指定行。

fileset 中的每份文件都被打开、读取并经过处理。

处理时读取文件,将其分成一行行的文字, 然后将每行解析成零或更多的符号。

最后用已找到的符号字符串变量值调用 For 循环。

默认情况下,/F 通过每个文件的每一行中分开的第一个空白符号。跳过空白行。

可以在/F后面添加字符串,其内容及意义如下:

"options"的内容

意义

eol=c

指定一个行注释字符的结尾(就一个)。例如eol=;--忽略以分号打头的那些行。

skip=n

指定在文件开始时忽略的行数。例如skip=2 --忽略2行

delims=xxx

指定分隔符,可以有多个。

tokens=x,y,m-n

指每行的哪一个符号被传递到每个迭代 的 for 本身。这会导致额外变量名称的分配。

可以使用m-n指定一个范围的变量。

若指定的最后一个字符是星号,那额外的变量将会分配到最后一个变量解析之后该行剩余的文本。

usebackq

若指定的文件名称有空格,则需要对其进行转义。

但使用‘’或“”会被理解为字符串或命令。

所以添加该参数以指定新的转义方式。

例:

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 "usebackq" %i in ('abc')
do echo %i

打印abc

还可以在相邻字符串上使用 FOR /F 分析逻辑,方法是,用单引号将括号之间的 file-set 括起来。

这样,该字符串会被当作一个文件中的一个单一输入行进行解析。

可以用 FOR /F 命令来分析命令的输出。

方法是,使用反引号括起字符串,则该字符串会被当作命令行,其命令结果会输出到内存中并被当作文件分析。

例:

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 的大写变量名

比较易读,而且避免与不分大小写的组合键混淆。

cmd中for的用法的更多相关文章

  1. thinkphp中memcache的用法实例

    本文实例讲述了thinkphp中memcache的用法.分享给大家供大家参考.具体分析如下: 1.下载并安装memcache ① window下安装memcache. 下载memcached.exe ...

  2. cmd中删除、添加、修改注册表命令

    转自:http://www.jb51.net/article/30586.htm regedit的运行参数 REGEDIT [/L:system] [/R:user] filename1 REGEDI ...

  3. [转载]C#中MessageBox.Show用法以及VB.NET中MsgBox用法

    一.C#中MessageBox.Show用法 MessageBox.Show (String) 显示具有指定文本的消息框. 由 .NET Compact Framework 支持. MessageBo ...

  4. 【python之路2】CMD中执行python程序中文显示乱码

    在IDLE中执行下面代码,中文显示正常: # -*- coding:utf-8 -*- st=raw_input("请输入内容")print st 但在CMD中执行e:\hello ...

  5. C#中string.format用法详解

    C#中string.format用法详解 本文实例总结了C#中string.format用法.分享给大家供大家参考.具体分析如下: String.Format 方法的几种定义: String.Form ...

  6. SQL中distinct的用法

    SQL中distinct的用法   1.作用于单列 2.作用于多列 3.COUNT统计 4.distinct必须放在开头 5.其他 在表中,可能会包含重复值.这并不成问题,不过,有时您也许希望仅仅列出 ...

  7. Oracle 中 decode 函数用法

    Oracle 中 decode 函数用法 含义解释:decode(条件,值1,返回值1,值2,返回值2,...值n,返回值n,缺省值) 该函数的含义如下:IF 条件=值1 THEN RETURN(翻译 ...

  8. jQuery中Animate进阶用法(一)

    jQuery中animate的用法你了解多少呢?如果仅仅是简单的移动位置,显示隐藏,哦!天哪你在浪费资源!因为animate太强大了,你可以有很多意想不到的用法!让我们一起研究一下吧~~ 首先要了解j ...

  9. [转载]js中return的用法

    一.返回控制与函数结果,语法为:return 表达式; 语句结束函数执行,返回调用函数,而且把表达式的值作为函数的结果 二.返回控制,无函数结果,语法为:return;  在大多数情况下,为事件处理函 ...

随机推荐

  1. 一个80后妈妈的邪淫忏悔(转自学佛网:http://www.xuefo.net/nr/article55/551761.html)

    我是一个80后独生女,2012年因为孩子小产后,痛苦难当,悲伤中想起可为孩子超度,因此开始了与佛法的缘分.断断续续几年的学习,才真的知道了邪淫的可怕 我从小面容姣好,气质超群,一直被父母,老师宠爱.想 ...

  2. array_map

    <?php //对数组中的每个元素做函数处理 $arr = array(,,,,,); function cheng($hah){ ; } var_dump(array_map('cheng', ...

  3. 【 Linux 】Systemd 配置文件说明及编写(2)

    1. 开机启动 对于支持 systemd 的软件,如果想要设置开机启动,就执行如下命令(以 http 为例): systemctl enable httpd 上面的命令相当于在 /etc/system ...

  4. elasticsearch5.0.1集群索引分片丢失的处理

    elasticdump命令安装 yum install npm npm install elasticdump -g 命令安装完毕,可以测试. 可能会报出nodejs的版本之类的错误,你需要升级一下版 ...

  5. ubuntu 搭建jdk1.8运行环境

    参照了:https://blog.csdn.net/smile_from_2015/article/details/80056297 首先下载linux对应的安装包 下载地址:http://www.o ...

  6. 为做个程序员英语字典,我处理了StackOverflow和HackerNews10年5千万条数据

    有点标题党,不过都说都真实的.英语技能对开发员人员至关重要.所有人都不喜欢背单词,但更惨的是背住的单词发现没怎么用,又慢慢地忘记了.本来计划给自己做个开发人员常用单词表,感觉可能对其它人也有用,所以就 ...

  7. synchronized的不足与redis分布式锁的使用

    这里是一个简单模拟秒杀的逻辑,stock和orders为两个Map,分别模拟库存表和订单表 public void orderProductMockDiffUser(String productId) ...

  8. linux服务器安装tomcat

    linux服务器安装tomcat 准备: 下载一个tomcat,官网连接:http://tomcat.apache.org/ 版本选择合适的 安装tomcat之前要先安装Java jdk 可以参考我的 ...

  9. C++ 中的 多态性

    一 .多态性 1.多态性概述:多态是指同样的消息被不同类型的对象接受时导致不同的行为 2.多态实现:编译时的多态:在编译的过程中确定了同名操作的具体对象.   运行时的多态:在程序运行过程中动态地确定 ...

  10. python 之 并发编程(非阻塞IO模型、I/O多路复用、socketserver的使用)

    9.16 非阻塞IO模型 cpu占用率过高 服务端: from socket import * import time s = socket() s.bind(('127.0.0.1',8080)) ...