当前位置: 移动技术网 > IT编程>网络>Dos/Bat > 学会批处理,用心学很容易!另一不错的见解第1/3页

学会批处理,用心学很容易!另一不错的见解第1/3页

2017年12月12日  | 移动技术网IT编程  | 我要评论
 这是一篇技术教程,真心诚意会用很简单的文字表达清楚自己的意思,只要你识字就能看懂,就能学到知识。写这篇教程的目的,是让每一个看过这些文字的朋友记住一句话:如果爱

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)。
文件解析
for /f ["options"] [%% | %]variable in (filenameset) do command [command-parameters]
for /f ["options"] [%% | %]variable in ("literal string") do command[command-parameters]
for /f ["options"] [%% | %]variable in ('command') do command [command-parameters]
或者,如果出现 usebackq 选项:
for /f ["options"] [%% | %]variable in (filenameset) do command [command-parameters]
for /f ["options"] [%% | %]variable in ('literal string') do command [command-parameters]
for /f ["options"] [%% | %]variable in (`command`) docommand [command-parameters]
filenameset 参数指定一个或多个文件名称。在继续到 filenameset 中的下一个文件之前,每个文件都会被打开、读取和处理。 
过程由读取文件、分成独立的文本行及然后将每行解析成零个或更多个令牌组成。然后使用设置为找到的一个或多个令牌字符串的变量值(或多个值)集合调用 for 循环体。默认情况下,/f 传递每个文件每一行的第一个空白分隔符号。
跳过空行。通过指定可选的“options”参数可以覆盖默认的解析行为。这是一个引用字符串,它包含一个或多个关键字以指定不同的解析选项。关键字是:
关键字 说明 
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 命令选择的文件名。 
more
每次显示一个输出屏幕。该命令通常用于查看长文件。可以单独使用此命令,或者使用它控制其他命令的输出,例如 type 命令。当显示填充可用的查看区域时将出现 more 提示,用户可以输入许多命令来控制查看文件其余部分的方式。
command name | more [/c] [/p] [/s] [/tn] [+n]
more [[/c] [/p] [/s] [/tn] [+n]] < [drive:][path] filename
more [/c] [/p] [/s] [/tn] [+n] [files]
参数
[drive:][path] filename
指定要显示的文件。
command name
指定将显示其输出的命令。
/c
显示页面前清除屏幕。
/p
扩展换页符。
/s
将多个空白行更改为一个空白行。
/tn
将制表位更改为 n 个空格
+n
显示由 n 指定的行开始的第一个文件。
files
指定要显示的文件列表。用空格分隔文件名。
more 子命令
以下命令在 more 提示 (-- more --) 下接受。
关键字 操作 
space 显示下一页。 
enter 显示下一行。 
f 显示下一个文件。 
q 退出。 
? 显示可用命令。 
= 显示行号。 
p n 显示以下 n 行。 
s n 跳过下面 n 行。 
find
在一个文件或多个文件中搜索指定的文本字符串。 
当搜索到指定的文件后,find 将显示出包含指定字符串的所有行。 
find [/v] [/c] [/n] "string" [[drive:][path]filename[...]] 
参数 
/v 
显示未包含指定字符串的所有行。 
/c 
只显示包含指定字符串的行数。 
/n 
将文件行号置于每行开头。 
/i 
指定搜索不区分大小写。 
"string" 
指定要搜索的字符组。必须将 string 的文本包括在引号中。 
[drive:][path] filename 
指定要在其中搜索指定字符串的文件的位置和名称。 
sort
读取输入、排序数据并将结果写到屏幕、文件和其他设备上。 
sort [/r] [/+n] [/m kilobytes] [/l locale] [/rec characters] [[drive1:][path1]filename1] [/t [drive2:][path2]] [/o [drive3:][path3]filename3]
[command |] sort [/r] [/+n] [/m kilobytes] [/l locale] [/rec characters] [[drive1:][path1]filename1] [/t [drive2:][path2]] [/o [drive3:][path3]filename3]
参数 
/r
颠倒排序顺序,即从 z 到 a 排序,然后从 9 到 0 排序。
/+n
指定字符位置号 n,sort 在此处开始每次比较。例如,/+3 表示每次比较在每行的第三个字符开始。少于 n 个字符的行在其他行之前排序。默认情况下,比较在每行的第一个字符开始。
/m kilobytes
指定用于排序的主内存数量,按千字节 (kb) 计。使用的内存最小值总是 160 kb。如果指定了内存大小,则无论有多少主内存可用,指定的确切数量(但至少 160 kb)的内存将用于排序。
如果输入输出均为文件,在没有指定大小时,默认最大内存大小为可用主内存的 90%,否则为主内存的 45%。默认设置通常会产生最佳的性能。
/l locale
替代由系统默认区域设置定义的字符排序顺序;即在安装 windows 2000 时选择的语言和“国家(地区)”。目前,默认区域设置唯一的备用选项就是“c”区域设置,该区域设置比自然语言排序快,根据二进制编码对字符排序。 
/rec characters
指定记录或输入文件的行中的最多字符数(默认值为 4096,最大值为 65535)。
[drive1:][path1]filename1
指定要排序的文件。如果没有指定文件名,则对标准输入排序。指定输入文件比将同一文件作为标准输入重定向速度快。
/t [drive2:][path2]
指定保留 sort 命令工作存储的目录路径,防止数据不能装入主内存。默认为使用系统临时目录。
/o [drive3:][path3]filename3
指定要存储排序后的输入的文件。如果没有指定,数据将写入标准输出。指定输出文件比将同一文件作为标准输出重定向速度快!
3

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网