|
批处理完全教程(11) eol=c 指定行尾注释字符(只一个字符) skip=n 指定在文件的开头跳过的行数。 delims=xxx 指定定界符集合。这将替换空格和制表符的默认分隔符集。 tokens=x,y,m-n 指定将令牌从每行传递到每个反复的正文。这将导致分配其他变量名。m-n 格式是一个范围,指定从 mth 到 nth 的令牌。如果在令牌 = 字符串中最后一个字符是星号,则将分配附加的变量,并在解析最后一个令牌后在行上接收剩余的文本。 usebackq 指定将右引号字符串作为命令执行,单引号字符串是文字字符串命令,您可以使用双引号包括 filenameset 中的文件名。
变量替换
此外,已经增强了 for 变量引用的替换修改程序。现在可以使用下列可选的语法(对于任何变量 I):
变量(使用修改程序) 说明 %~I 展开删除了周围的任何引号 (") 的 %I %~fI 将 %I 展开到完全合格的路径名 %~dI 只将 %I 展开到驱动器号 %~pI 只将 %I 展开到路径 %~nI 只将 %I 展开到文件名 %~xI 只将 %I 展开到文件扩展名 %~sI 展开路径以只包含短名称 %~aI 将 %I 展开到文件的文件属性 %~tI 将 %I 展开到文件的日期/时间 %~zI 将 %I 展开到文件大小 %~$PATH:I 搜索 PATH 环境变量所列出的目录,并将 %I 展开开到第一个找到结果的全部合格名称。如果没有定义环境变量名,或搜索后没有找到文件,则此修改程序将扩展为空字符串。
修改程序可以合并以获得复杂的结果:
变量(使用合并的修改程序) 说明 %~dpI 只将 %I 展开到驱动器号和路径 %~nxI 只将 %I 展开到文件名和扩展名 %~fsI 将 %I 展开到只包含短名称的完整路径名 %~dp$PATH:I 在 PATH 环境变量所列出的目录中搜索 %I,并展开到第一个找到结果的驱动器号和路径 %~ftzaI 将 %I 扩展到与 dir 相似的输出行
注意
在上述范例中,%I 和 PATH 可被其他有效值替换。通过有效的 for 变量名终止 %~ 语法。 使用大写变量名(例如 %I)可以使代码更具可读性,并且避免与不区分大小写的修改程序混淆
Shift 更改批处理文件中可替换参数的位置。
shift
启用命令扩展(Windows 2000 中的默认设置)后,shift 命令支持 /n 开关,该开关通知命令在第 n 个参数处开始更改,n 可以是从 0 到 8 的任何一个值。例如,
SHIFT /2
将 %3 改为 %2,将 %4 改为 %3 等等,而 %0 和 %1 保持不变。
筛选器命令 筛选器命令可以帮助您排序、查看和选择部分命令输出结果。
通过筛选器命令传递信息
筛选器命令可以划分、重排以及提取通过的部分信息操作。Windows 2000 有三个筛选器命令:
more 命令每次显示一屏文件内容或命令输出。 find 命令在文件和命令输出中搜索指定字符。 sort 命令按字母顺序排列文件和命令输出。
要将输入从文件发送到筛选器命令,请使用小于符号 (<)。如果要筛选器命令从其他命令获得输入,请使用管道 (|)。
使用 more 命令来控制屏幕显示
more 命令每次一屏地显示文件的内容或命令输出。例如,下面的 more 命令每次显示一屏 List.txt 文件的内容:
more < list.txt
信息显示一屏后,会出现字“More”。要继续显示下一屏,请按键盘上任意键。要停止命令且不查看详细信息,请按 CTRL+C 键。
如果使用产生多屏输出的命令,more 将十分有用。例如,假设定要查看硬盘的目录树。如果 Windows 2000 不能将目录在一屏内全部显示出来,请使用带管道号 (|) 和 more 命令的 tree 命令,如下例所示:
tree c:\ | more
tree 命令的第一屏输出被显示,后跟词“More”。Windows 2000 暂停,直到用户按键盘上的任意键为止(PAUSE 键除外)。
使用 find 命令搜索文本
find 命令在一个或多个文件中搜索指定文本。Windows 2000 显示每个包含该文本的行。find 命令可以用作筛选器命令或者标准的 Windows 2000 命令。有关将 find 用作标准的 Windows 2000 命令的信息,请单击“相关主题”列表中的 find。
要将 find 当作筛选器命令使用,请包含小于符号 (<) 和搜索的文件名。当输入文件名时,请记住搜索要区分大小写。例如,下面的命令查找文件 Trade.txt 中所有的“Pacific Rim”字符串:
find "Pacific Rim" < trade.txt
要保存 find 命令的输出而不是显示输出,请使用大于号 (>) 和要存储输出的文件名。例如,下面的命令查找文件 Trade.txt 中所有的“Pacific Rim”字符串,并将结果保存在 Nwtrade.txt 文件中:
find "Pacific Rim" < trade.txt > nwtrade.txt
对文本文件排序
sort 命令按字母顺序排列文本文件或命令的输出。例如,可以使用以下命令对 List.txt 文件的内容进行排序,并在屏幕上显示结果:
sort < list.txt
在此范例中,sort 命令对 List.txt 文件的行进行排序并显示结果,但不更改文件。要保存 sort 命令的输出而不是显示输出,请在命令中包含大于号 (>) 和文件名。例如,可以使用以下命令对 List.txt 文件的行按字母顺序排序,并将结果存到 Alphlist.txt 文件中:
sort < list.txt > alphlist.txt
要排序命令的输出,请键入后面带有管道 (|) 和 sort 命令的命令。例如,下面的命令对 find 命令的输出结果进行排序:
find "Jones" maillst.txt | sort
在键入该命令时,Windows 2000 按字母顺序列出在其中出现“Jones”的行。
带重定向符的合并命令
可以将筛选器命令、其他命令和文件名合并以生成自定义命令。例如,可以使用以下命令存储包含“LOG”字符串的文件名:
dir /b | find "LOG" > loglist.txt
Windows 2000 通过 find 过滤器命令发送 dir 命令的输出并将包含字符串“Log”的文件名存储在 Loglist.txt 文件中。将结果存储为文件名列表(如,A.log、Logdat.svd 和 Mylog.bat)。
要在相同命令中使用多个筛选器,请使用管道 (|) 分隔筛选器。例如,下面的命令搜索 C 盘上的每个目录以查找包含“Log”字符串的文件名,并且每次显示一屏:
dir c:\ /s /b | find "LOG" | more
因为使用管道 (|),Windows 2000 通过 find 命令发送 dir 命令的输出结果。find 命令只选择包含字符串“Log”的文件名。more 命令每次一屏地显示 find 命令选择的文件名。
|