大家好,又见面了,我是你们的朋友全栈君。
简述
for命令是cmd中功能最强大的命令之一,for命令作用来执行迭代任务。
下面是msdn中关于for命令语法的参考,建议中文和英文对照阅读,如果只看中文的话。有一些地方的翻译会难以理解,直接看英文原文就很清晰。
https://docs.microsoft.com/zh-cn/windows-server/administration/windows-commands/for
语法
基本语法:
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
该命令的执行效果如图所示,会列入该目录中所有txt类型的文件,并打印文件名。
或者用for来迭代一系列的值,实例如下:
扩展语法:
在启用命令扩展的情况下(默认为启用状态),for会有如下几种额外的形式支持:
- 仅目录查找
for /d {%%|%}<Variable> in (<Set>) do <Command> [<CommandLineOptions>]
- 迭代目录
for /r [[<drive>:]<path>] {%%|%}<variable> in (<set>) do <command> [<commandlinepptions>]
- 迭代一系列值
for /l {%%|%}<variable> in (<start#>,<step#>,<end#>) do <command> [<commandlinepptions>]
- 文件,字符串解析
for /f [<parsingkeywords>] {%%|%}<variable> in (<set>) do <command> [<commandlinepptions>]
for /f [<parsingkeywords>] {%%|%}<variable> in (<literalstring>) do <command> [<commandlinepptions>]
for /f [<parsingkeywords>] {%%|%}<variable> in (‘<command>’) do <command> [<commandlinepptions>]
for /f的语法较为复杂,理解起来有一定的难度,for /f中的解析关键字[parsingkeywords]允许使用下面的形式:
- eol指定在解析文本文件的行结束符
- delims指定解析文件时使用的分隔符,默认的分隔符为空格或制表符
- tokens指定在每行中要传递给%i的标记的索引,如果制定了多个标记,for 语句会分配额外的变量来接受内容,如果最后一个标记为*,for会多分配一个额外的字符串接收*之后额字符串内容。实例如下:
在我的电脑的e盘的test目录中存在一个zhang2.txt的文件,文件的内容如下:
我们使用下面的for /f语句来解析该文件的内容:
还有更多的用法可以尝试。
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/155475.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...