批处理之for命令[通俗易懂]

大家好,很高兴再次与大家见面,我是你们的朋友全君。

for命令是cmd中最强大的命令之一,主要用于执行迭代任务。

以下是关于for命令语法的参考,建议大家对照中英文阅读,因为有些中文翻译可能不够清晰,直接看英文原文会更容易理解。

https://www.php.cn/link/4b3ac70a62256956d9de54849321c78d

基本语法: for命令的基础语法如下:

for %i|%%i in (set) do command  [commandlineoptions]

其中,%i|%%i为在for中使用的迭代变量。即使在后面的command命令中没有使用到变量%i,变量也是必须声明的。变量名可以使用除%0~%9之外的任意字母,例如%j,%k,%l都是合法的。set表示一个需要for循环进行搜索的集合,可以是字符串、文件路径或一系列的值,set中可以使用通配符 ‘*’ 和 ‘?’。如果直接在命令行中输入,使用%i;如果是写在批处理文件中,则需要写作%%i。for语句中的变量名是区分大小写的,%i和%I会被视为不同的变量。command表示在每次循环中执行的命令,commandlineoptions表示某些command命令在运行时使用的开关参数,为非必要参数。下面是一个基本用法的实例。在我们的e:test路径中存在一些文件,我们可以使用for循环来搜索此路径中的所有文件,并打印出文件名。

for %i in (e:test*.txt) do @echo %i

批处理之for命令[通俗易懂] 该命令的执行效果如图所示,会列出该目录中所有txt类型的文件,并打印文件名。

或者使用for来迭代一系列的值,实例如下:

批处理之for命令[通俗易懂]

扩展语法: 在启用命令扩展的情况下(默认为启用状态),for会有如下几种额外的形式支持:

  • 仅目录查找

    for /d {%%|%}<variable> in (<set>) do <command> [<commandlineoptions>]
  • 迭代目录

    for /r [[<drive>:]<path>] {%%|%}<variable> in (<set>) do <command> [<commandlineoptions>]
  • 迭代一系列值

    for /l {%%|%}<variable> in (<start>,<step>,<end>) do <command> [<commandlineoptions>]
  • 文件,字符串解析

    for /f [<parsingkeywords>] {%%|%}<variable> in (<set>) do <command> [<commandlineoptions>] for /f [<parsingkeywords>] {%%|%}<variable> in (<literalstring>) do <command> [<commandlineoptions>] for /f [<parsingkeywords>] {%%|%}<variable> in ('<command>') do <command> [<commandlineoptions>]

for /f的语法较为复杂,理解起来有一定的难度。for /f中的解析关键字[parsingkeywords]允许使用下面的形式:

批处理之for命令[通俗易懂]批处理之for命令[通俗易懂] eol指定在解析文本文件的行结束符,delims指定解析文件时使用的分隔符,默认的分隔符为空格或制表符,tokens指定在每行中要传递给%i的标记的索引,如果制定了多个标记,for语句会分配额外的变量来接受内容,如果最后一个标记为,for会多分配一个额外的字符串接收之后的字符串内容。实例如下: 在我的电脑的e盘的test目录中存在一个zhang2.txt的文件,文件的内容如下:

批处理之for命令[通俗易懂] 我们使用下面的for /f语句来解析该文件的内容:

批处理之for命令[通俗易懂]批处理之for命令[通俗易懂] 还有更多的用法可以尝试。

发布者:全栈程序员栈长,转载请注明出处:https://www.php.cn/link/6f7790bb54a7c5d3dea27385488a604a

© 版权声明
THE END
喜欢就支持一下吧
点赞6 分享