dos下如何使用for循环?
看他的基本格式(这里我指的是批处理中的格式,直接在命令行上只需要一个%符号)
FOR参数%% variable name IN(相关文件或命令)DO command parameter: FOR有四个参数/d /l /r /f,下面举例说明它们的功能。
%%变量名:这个变量名可以是单个小写的a-z或者大写的A-Z,它们是区分大小写的,并且for会给他每一个读取的值!
IN:命令的格式,写就好!
(相关文件或命令):FOR对变量的读取和赋值是什么?如果你不明白,看看下面的例子。
Do:命令的格式,写就好!
执行的命令:在这里写下如何处理每个变量的值。
如果你不明白我的指示,你可以打for/?看系统提供的帮助!我也在这里给。我们来对比一下
FOR %%variable IN (set) DO命令[命令-参数]
% %变量指定单个字母可替换参数。
(set)指定一个或一组文件。可以使用通配符。
Command指定对每个文件执行的命令。
命令参数
为特定命令指定参数或命令行开关。现在来说说各个参数的意义。1.参数/d
FOR/D %变量IN (set) DO命令[命令-参数]
如果集合包含通配符,则指定它匹配目录名,而不是文件。
名字匹配。
如果集合(也就是我上面写的“相关文件或命令”)包含通配符(*和?),将对与该集匹配的每个目录执行指定的命令,而不是指定目录中的文件组。
该参数主要用于目录搜索,不用于文件。请看这个例子。
@关闭回声
对于(c:\*)中的/d %%i,请执行echo %%i
中止
运行会打印出c盘根目录下的所有目录名,文件名一个都不显示!
这里还有一个。例如,我们需要在当前路径下键入文件夹的名称,仅包含1-3个字母。
@关闭回声
对于/d %%i in(?)做echo %%i
中止
这样,如果你在当前目录下有一个只有1-3个字母的目录名,就会显示出来,如果没有,就不显示。
解释一下*和这里?数字的作用,*号表示任意n个字符,而?该数字仅代表任意一个字符。
认识角色,给大家一个思考话题!
@关闭回声
for /d %%i in(窗口?)做echo %%i
中止
如果保存到c盘执行会显示什么?自己看吧!显示器:窗口
/D参数只能显示当前目录下的目录名。请注意这一点!第二,参数/R
FOR/R[[drive:]path]%变量IN(set)DO command[command-parameters]
检查以[drive:]path为根的目录树,并指向每个目录中的。
对于语句,如果在/R后没有指定目录,则使用当前目录。
目录。如果集合只是一个点(。)字符,枚举目录树。递归
上面我们知道,/D只能显示当前路径下的目录名,所以现在这个/R也和目录有关。他能做什么?放心吧,他比/D厉害多了!
他可以读取当前或你指定路径中的所有文件名,注意文件名,例子有什么用!
请注意两点:
如果文件名在1和set中包含通配符(?或*),列出/R参数指定的目录中的所有文件以及下面使用的子目录,不列出没有匹配文件的目录。
2.相反,如果集合包含不带通配符的特定文件名,则目录树将被枚举(即,将枚举目录及其下的所有子目录),而不管集合中的指定文件是否存在。这和单点(。)上面提到的枚举目录树。单点代表当前目录,也可以看作一个文件。
示例:
@关闭回声
for /r c:\ %%i in (*。exe)执行echo %%i
中止
让我们把这个BAT保存在D盘的任何地方并执行它。我会看到他列出了c盘根目录下的所有EXE文件以及每个目录的子目录!!!!
示例:
@关闭回声
for /r %%i in (*。do @echo %%i
中止
参数不一样!这个命令前面没有C:\这个搜索路径,所以他将使用当前目录作为搜索路径。比如你把这个BAT放在d:\test目录下,那么他会列出D:\test目录及其子目录下的所有EXE文件!!!
示例:
@关闭回声
对于(boot.ini)中的/r c:\ %%i,执行echo %%i
中止
运行此示例后,发现驱动器C的所有目录都被枚举。为了仅枚举boot.ini所在的目录,可以将其更改如下:
@关闭回声
for/r c:\ % % I in(boot . ini)do if exist % % I echo % % I
中止
用这个命令搜索文件很好。。。。。。
这个参数大家应该都懂吧!还是个好玩的订单!三。参数/L
FOR/L %变量IN (start,step,end) DO命令[命令-参数]
这个集合表示从开始到结束递增的一系列数字。
因此,(1,1,5)将产生序列1 2 3 4 5,(5,1,1)将产生。
顺序(5 4 3 2 1)。
使用迭代变量设置一个起始值(Start#),然后逐渐执行一个值范围,直到该值超过设置的结束值(End#)。/L迭代变量将通过比较Start#和End#来执行。如果Start#小于End#,将执行该命令。如果迭代变量超过End#,命令解释器退出这个循环。您也可以使用负步长#以递减的数值方式逐渐实现此范围内的值。例如,(1,1,5)生成序列1 2 3 4 5,而(5,1,1)生成序列(5 4 3 2 1)。语法是:
看这个,意思是有点晕!我们看例子的时候不要晕头转向!
@关闭回声
对于/l %%i in (1,1,5) do @echo %%i
中止
保存执行,看效果。他将打印出1 2 3 4 5中的五个数字。
(1,1,5)这个参数的意思是从1开始每次加1,直到5结束!
我一会晕,就打印一个带P的数字...好满足大家,看这个例子。
@关闭回声
对于/l %%i in (1,1,5),请启动cmd
中止
行刑后有没有休克?怎么多了五个CMD窗口,呵呵!如果你把那个(1,1,5)改成(1,1,65535),我先告诉你,65535 CMD窗口会打开...不撞车就是强!
当然,我们也可以将start cmd改为md %%i,这样会创建一个指定的目录!!!姓名是1-65535
看完这个我赋予了破坏性的参数,再来看最后一个参数。
四。参数/F
\迭代和文件解析
使用文件解析来处理命令输出、字符串和文件内容。使用迭代变量来定义要检查的内容或字符串,并使用各种选项来进一步修改解析方法。使用options token选项指定哪些标记应该作为迭代变量传递。注意:当不使用令牌选项时,/F将只检查第一个令牌。
文件解析过程包括读取输出、字符串或文件内容,将其分成独立的文本行,并将每行解析成零个或多个标记。然后通过将for循环设置为令牌的迭代变量值来调用它。默认情况下,/F传递每个文件中每行的第一个空白分隔符。跳过空行。详细的帮助格式如下:
FOR/F[" options "]%变量IN (file-set) DO命令[命令-参数]
FOR/F[" options "]% variable IN(" string ")DO命令[命令-参数]
FOR/F[" options "]%变量IN(' command ')DO command[command-parameters]
引用的字符串“选项”包括一个或多个
为不同的解析选项指定关键字。这些关键字是:
eol = c-表示行注释字符的结束(只有一个)
skip = n-表示在文件开头忽略的行数。
delims = XXX-表示分隔符集。这个代替了空格和制表符。
默认分隔符集。
Tokens=x,y,m-n-指的是每一行的哪个符号传递给每次迭代。
为了自己。这将导致分配额外的变量名。男男
格式是一个范围。第m个由第n个符号指定。如果
符号串中的最后一个字符星号,
然后,将在最后一个符号之后解析额外的变量。
分配并接受该行的保留文本。
使用反引号(键盘上数字1左边的键)。
不使用参数usebackq时:file-set表示文件,但不能包含空格。
双引号表示一个字符串,即“字符串”