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表示文件,但不能包含空格。

双引号表示一个字符串,即“字符串”