命令执行,即`command` 以上是用for /?命令获得的帮助信息,直接复制过来的。 晕惨了!我这就举个例子帮助大家来理解这些参数! For命令例1:**************************************** @echo off rem 首先建立临时文件test.txt echo ;注释行,这是临时文件,用完删除 >test.txt echo 11段 12段 13段 14段 15段 16段 >>test.txt echo 21段,22段,23段,24段,25段,26段 >>test.txt echo 31段-32段-33段-34段-35段-36段 >>test.txt FOR /F \"eol=; tokens=1,3* delims=,- \" %%i in (test.txt) do echo %%i %%j %%k Pause Del test.txt 运行显示结果: 11段 13段 14段 15段 16段 21段 23段 24段,25段,26段 31段 33段 34段-35段-36段 请按任意键继续. . . 为什么会这样?我来解释: eol=;分号开头的行为注释行 tokens=1,3*将每行第1段,第3段和剩余字段分别赋予变量%%i,%%j,%%k delims=,- (减号后有一空格)以逗号减号和空格为分隔符,空格必须放在最后 For命令例2:**************************************** @echo off FOR /F \"eol= delims=\" %%i in (test.txt) do echo %%i Pause 运行将显示test.txt全部内容,包括注释行,不解释了哈。 For命令例3:**************************************** 另外/F参数还可以以输出命令的结果看这个例子 @echo off FOR /F \"delims=\" %%i in (#39;net user') do @echo %%i pause 这样你本机全部帐号名字就出来了把扩号内的内容用两个单引号引起来就表示那个当命令执行,FOR会返回命令的每行结果,加那个\"delims=\" 是为了让我空格的行能整行显示出来,不加就只显示空格左边一列! 基本上讲完了FOR的基本用法了...如果你看过FOR的系统帮助,你会发现他下面还有一些特定义的变量,这些我先不讲.大家因该都累了吧!你不累我累啊.... 第三章 FOR命令中的变量 FOR命令中有一些变量,他们的用法许多新手朋友还不太了解,今天给大家讲解他们的用法! 先把FOR的变量全部列出来: ~I- 删除任何引号(\"),扩展 %I %~fI- 将 %I 扩展到一个完全合格的路径名 %~dI- 仅将 %I 扩展到一个驱动器号 %~pI- 仅将 %I 扩展到一个路径 %~nI- 仅将 %I 扩展到一个文件名 %~xI- 仅将 %I 扩展到一个文件扩展名 %~sI- 扩展的路径只含有短名 %~aI- 将 %I 扩展到文件的文件属性 %~tI- 将 %I 扩展到文件的日期/时间 %~zI- 将 %I 扩展到文件的大小 %~$PATH:I - 查找列在路径环境变量的目录,并将 %I 扩展 到找到的第一个完全合格的名称。如果环境变量名 未被定义,或者没有找到文件,此组合键会扩展到 空字符串 我们可以看到每行都有一个大写字母\"I\",这个I其实就是我们在FOR带入的变量,我们FOR语句代入的变量名是什么,这里就写什么. 比如:FOR /F%%z IN (#39;set') DO @echo %%z 这里我们代入的变量名是z那么我们就要把那个I改成z,例如%~fI改为%~fz 至于前面的%~p这样的内容就是语法了! 好开始讲解: 一、 ~I- 删除任何引号(\"),扩展 %I 这个变量的作用就如他的说明,删除引号! 我们来看这个例子: 首先建立临时文件temp.txt,内容如下 \"1111 \"2222\" 3333\" \"4444\"44 \"55\"55\"55 可建立个BAT文件代码如下: @echo off echo ^\"1111>temp.txt echo \"2222\">>temp.txt echo 3333^\">>temp.txt echo \"4444\"44>>temp.txt echo ^\"55\"55\"55>>temp.txt rem 上面建立临时文件,注意不成对的引号要加转义字符^,重定向符号前不要留空格 FOR /F \"delims=\" %%i IN (temp.txt) DO echo%%~i pause del temp.txt 执行后,我们看CMD的回显如下: 1111 #字符串前的引号被删除了 2222 #字符串首尾的引号都被删除了 3333\"#字符串前无引号,后面的引号保留 4444\"44#字符串前面的引号删除了,而中间的引号保留 55\"55\"55 #字符串前面的引号删除了,而中间的引号保留 请按 |