批处理 for(批处理中for语句的用法)

本文目录
- 批处理中for语句的用法
- Windows批处理-for命令详解
- 批处理 for循环,可以循环1到N次,请问能不能循环指定的值
- 关于一个批处理的解释,有关for的命令
- BAT批处理文件for循环的基本格式方法
- 批处理for /l
- 批处理中for循环变量赋值问题
- 电脑批处理for语句的for和in和do分别代表什么意思
- Windows怎么批处理命令for for批处理命令怎么用 批处理命令教程
- 批处理中for in do 到底什么意思,感觉千变万化的
批处理中for语句的用法
如果命令扩展名被启用,下列额外的 FOR 命令格式会受到
支持:
FOR /D %variable IN (set) DO command
如果集中包含通配符,则指定与目录名匹配,而不与文件
名匹配。
FOR /R %variable IN (set) DO command [command-
检查以 path 为根的目录树,指向每个目录中的
FOR 语句。如果在 /R 后没有指定目录,则使用当前
目录。如果集仅为一个单点(.)字符,则枚举该目录树。
Windows批处理-for命令详解
摘自Windows XP的帮助文档。
For对一组文件中的每个文件运行指定的命令。
语法
for {%variable|%%variable} in (set) do command
参数
{%variable|%%variable}
必需。代表可替换的参数。使用 %variable 通过命令提示符执行 for 命令。使用 %%variable 在批处理文件中执行 for 命令。变量要区分大小写,并且必须用 Alpha 值表示,例如,%A、%B 或 %C。
(set)
必需。指定要用指定命令处理的一个或多个文件、目录、数值范围以及文本字符串。需要括号。
command
必需。指定要对包括在指定 (set) 中的每个文件、目录、数值范围以及文本字符串所执行的命令。
CommandLineOptions
指定要通过指定命令使用的任何命令行选项。
/?
在命令提示符显示帮助。
注释
使用 for
可以在批处理文件中或直接从命令提示符使用 for 命令。
使用批处理参数
下列属性适用于 for 命令:
for 命令使用指定 set 中的每个文本字符串替换 %variable 或 %%variable,直到 command 处理所有文件为止。
记住,for variable名是区分大小写、全局的,并且每次总共不超过 52 个是活动的。
要避免批处理参数从 %0 到 %9 混淆,对 variable 可以使用除数字 0 到 9 之外的任何字符。对于简单的批处理文件,单个字符即可奏效,例如 %%f。
在复杂的批处理文件中可以使用 variable 的多个值来区分不同的可替换变量。
显示一组文件
set 参数可以代表单个或多个文件组。可以使用通配符(即,* 和 ?)指定文件组。以下为有效文件组:
(*.doc)
(*.doc *.txt *.me)
(jan*.doc jan*.rpt feb*.doc feb*.rpt)
(ar??1991.* ap??1991.*)
在使用 for 命令时,set 中的第一个值代替 %variable 或 %%variable,然后由指定的命令处理该值。这一直会继续下去,直到处理完与 set 值相对应的所有文件(或文件组)为止。
使用 in 和 do 关键字
In 和 do 不是参数,但必须将它们与 for 一起使用。如果省略其中任何一个关键字,就会出现错误消息。
使用 for 的其它形式
如果命令扩展名处于启用状态(即,默认设置),则支持 for 的下列其它形式:
仅为目录
如果 set 包含通配符(* 和 ?),则为匹配 set 的每个目录(而不是指定目录中的文件组)而执行指定的 command。语法是:
for /D {%% | %}variable in (set) do command
递归
进入根目录树 Path,在树的每个目录中执行 for 语句。如果在 /R 后没有指定目录,则假定为当前目录。如果 set 只是一个句号 (.),则只列举目录树。语法是:
for /R
重复数值范围
使用迭代变量设置起始值 (start#) ,然后一步步执行一系列设置范围的值,直到该值超过设置的终止值 (end#)。/L 将通过对 start# 与 end# 进行比较,执行迭代变量。如果 start# 小于 end#,就会执行该命令。如果迭代变量超过 end#,则命令解释程序退出此循环。也可以使用负 step# 以递减数值的方式一步步执行此范围内的值。例如,(1,1,5) 生成顺序 1 2 3 4 5,而 (5,-1,1) 则生成顺序 (5 4 3 2 1)。语法是:
for /L {%% | %}variable in (start#,step#,end#) do command
重复和文件解析
使用文件解析过程处理命令输出、字符串和文件内容。使用迭代变量定义要检查的内容或字符串,以及使用各种 ParsingKeywords 选项进一步修改解析方式。使用 ParsingKeywords 令牌选项指定哪些令牌应该传递为迭代程序变量。注意:在没有使用令牌选项时,/F 将仅检查第一个令牌。
文件解析过程包括读取输出、字符串或文件内容、分成独立的文本行及然后将每行解析成零个或更多个令牌。然后通过设置为令牌的迭代程序变量值,调用 for 循环。默认情况下,/F 传递每个文件每一行的第一个空白分隔符号。跳过空行。语法的不同点为:
for /F
for /F
for /F
filenameset 参数指定一个或多个文件名称。在继续到 filenameset 中的下一个文件之前,每个文件都会被打开、读取和处理。要覆盖默认解析行为,指定 "ParsingKeywords"。这是一个引用字符串,它包含一个或多个关键字以指定不同的解析选项。
如果使用 usebackq 选项,请使用如下语法之一:
for /F
for /F
for /F
下表列出可以用于 ParsingKeywords 的解析关键字。
关键字 说明
eol=c 指定行尾字符(只一个字符)。
skip=n 指定在文件的开头跳过的行数。
delims=xxx 指定定界符集合。这将替换空格和制表符的默认分隔符集。
tokens=x,y,m-n 指定将哪些令牌从每行传递到每个迭代的 for 正文。结果就分配了附加变量名称。m-n 格式是一个范围,指定从 mth 到 nth 的令牌。如果 tokens=字符串中最后一个字符是星号 (*),则将分配附加的变量,并在解析的最后一个令牌后在行上接收剩余的文本。
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 变量名终止 %~ syntax。
使用大写变量名(例如 %I),可以使代码更具可读性,并且避免与不区分大小写的修改程序混淆。
解析字符串
通过将 Filenameset 包括在圆括号内,并且外面再带上单引号(即,’filenameset’),可以使用 for /F 对直接字符串解析逻辑。将 Filenameset 视为从某个文件输入的单行,然后接受解析。
解析输出
通过将圆括号之间的 filenameset 变为后面带有引号的字符串,可以利用 for /F 命令解析命令输出。将它作为命令行,此命令被传递给子 Cmd.exe,并将输出捕获到内存并进行解析,就象它是一个文件一样。
范例
要在批处理文件中使用 for,请使用以下语法:
for %%variable in (set) do command
要通过使用可替换变量 %f 显示当前目录中扩展名为 .doc 或 .txt 的所有文件的内容,请键入:
for %f in (*.doc *.txt) do type %f
在前述范例中,当前目录中扩展名为 .doc 或 .txt 的每个文件都被替代为变量 %f ,直到每个文件的内容都显示为止。要在批处理文件中使用该命令,只需使用 %%f 替换 %f 的每个事件。否则忽略此变量,并显示一条错误消息。
要解析文件,同时忽略注释行,请键入:
for /F "eol=; tokens=2,3* delims=," %i in (myfile.txt) do @echo %i %j %k
这个命令解析 myfile.txt 文件的每一行,忽略以分号开头的行,将第二和第三个令牌从各行传递到 FOR 正文(令牌通过逗号或空格分隔)中。FOR 语句的正文引用 %i 以获得第二个令牌,引用 %j 以获得第三个令牌,引用 %k 以获得其余全部令牌。如果您提供的文件名包含空格,请使用引号将文本引起来(例如,"File Name")。要使用引号,必须使用 usebackq。否则,就将引号解释为定义要解析的文字字符串。
要通过将 filenameset 放在括号之间来解析命令输出,请键入:
for /F "usebackq delims==" %i IN (`set`) DO @echo %i
这个范例列举当前环境中的环境变量名。
批处理 for循环,可以循环1到N次,请问能不能循环指定的值
批处理 for循环,可以循环1到N次,可以循环指定的值,循环方法为:
1、新建一个for.txt文件然后重名成for.bat文件。
2、在for.bat输入:echo for循环 所有的脚本语言都一言,一般用echo输出。pause 表示暂停。
3、不错从上面的调试结果看,输出异常难看,我们可以在前面加个声明让界面变的好看。@echo off。
4、然后用set 设置一个数值 set time=10 我们可以用来进行循环次数所用。然后用echo %time% 输出数值。
5、然后用写for循环。
6、最后可以看到输出1-10个数字。
注意事项:
批处理就是对某对象进行批量的处理,通常被认为是一种简化的脚本语言,它应用于DOS和Windows系统中。批处理文件的扩展名为bat 。
关于一个批处理的解释,有关for的命令
1.%%a 表示变量名称为a ,%%a是批处理的用法,在cmd命令行里用%a。也就是读取in()里面的结果保存到a这个变量里。
2.in里文件可以指定文档比如1.txt,也可以使用通配符 *.*、*.txt 等。
3.%%~za为获取文件大小,还有其他用法:%%~ta获取文件日期\时间,可以在CMD里输入for/?查看。
4.%%~za就是文件的大小,%%a才是整个文件名称。
5.for /r d:\ %a in (*.txt) do echo %a 搜索真个D盘的txt文档,/R为搜索这个目录的所有子目录。
6.for /f %%a in (’dir/b/a-d‘) do (set n+=1&&ren %%a !n!.txt)
BAT批处理文件for循环的基本格式方法
你还在为不知道BAT批处理文件for循环的基本格式方法而烦恼么?接下来是我为大家收集的BAT批处理文件for循环的基本格式方法教程,希望能帮到大家。
BAT批处理文件for循环的基本格式方法
一,基本格式
对一组文件中的每一个文件执行某个特定命令。
FOR %variable IN (set) DO command
%variable 指定一个单一字母可替换的参数。
(set) 指定一个或一组文件。可以使用通配符。
command 指定对每个文件执行的命令。
command-parameters
为特定命令指定参数或命令行开关。
在批处理程序中使用 FOR 命令时,指定变量请使用 %%variable
而不要用 %variable。变量名称是区分大小写的,所以 %i 不同于 %I.
参数:for有4个参数 /d /l /r /f 他们的作用在下面的例子中讲解
二,参数/d
FOR /D %variable IN (set) DO command
如果集中包含通配符,则指定与目录名匹配,而不与文件名匹配。
例如:
@echo off
for /d %%i in (c:*) do echo %%i
pause
运行后, 会把c盘根目录下的全部目录打印出来, 不会打印文件
例子:
@echo off
for /d %%i in (???) do echo %%i
pause
会把当前目录下有目录名字只有1-3个字母的,就会显示出来,没有就不显示了
* 号表示任意N个字符,而?只表示任意一个字符
三,参数/r
FOR /R
检查以 path 为根的目录树,指向每个目录中的 FOR 语句。
如果在 /R 后没有指定目录规范,则使用当前目录。如果集仅为一个单点(.)字符,
则枚举该目录树。
/r 可以把当前或者你指定路径下的文件名全部读取,注意是文件名字,
注意2点:
1.set中的文件名如果含有通配符(?或*),则列举/r参数指定的目录及其下面的所有子目录中和set相符合的所有文件,无相符文件的目录则不列举
2.相反,如果set中为具体文件名,不含通配符,则列举该目录树,而不管set中的指定文件是否存在
例子:
@echo off
for /r d: %%i in (*.exe) do echo %%i
pause
将把d盘里以exe结尾的文件全部列出来
@echo off
for /r d: %%i in (boot.ini) do echo %%i
pause
列举d盘中存在boot.ini文件的目录
四。
FOR /L %variable IN (start,step,end) DO command
该集表示以增量形式从开始到结束的一个数字序列。因此,(1,1,5)将产生序列
1 2 3 4 5,(5,-1,1)将产生序列(5 4 3 2 1)
start 为起始值,stup为增量,end结束值,
例子:
@echo off
for /l %%i in (1,1,5) do echo %%i
pause
将会列出12345 这几个值
@echo off
for /l %%i in (1,1,5) do start cmd
pause
会打开5个cmd的窗口
五,参数/F
迭代及文件解析
使用文件解析来处理命令输出,字符串及文件内容,使用迭代变量定义要检查的内容或字符串,并使用各种option选项来进一步
修改解析方式,使用options令牌选项指定那些令牌应该作为迭代变量传递
注意:在没有使用令牌选项时,/f将只检查第一个令牌
文件解析过程包括读取输出,字符串或文件内容,将其分成独立的文本行以及在将每行解析成零个或更多个令牌
让后通过设置为令牌的迭代变量值,调用for循环,默认情况下,/f传递每个文件每一行的第一个空白分隔符,跳过空行
命令格式:
FOR /F
FOR /F
FOR /F
带引号的字符串“options”包括一个或多个
指定不同解析选项的关键字,这些关键字为:
eol=c 指定一个注释字符的结尾(就一个)
skip=n 指在文件开始时忽略的行数
delims=xxx 指定分隔符集,这个替换了空格和跳格键的默认分隔符集
tokens=x,y,m-n 指每行的哪一个符合被传递到每个迭代的for本身,这回倒是额外名称的分配,m-n格式为一个范围
通过nth符号指定mth,如果符号字符串中的最好一个字符星号,那么额外的变量将在最好一个符号解析之后分配并接受行的保留文本,
经过测试,该参数最多只能区分31个字段
usebackq 指定新语法已在下类情况中使用:
在作为命令执行一个后引号的字符串并且一个单
引号字符为文字字符串命令并允许在 file-set
中使用双引号扩起文件名称。
例子:
@echo off
rem 首先建立临时文件,用完删除》test.txt
echo ;注释行,这个是临时文件,用完删除》text.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 text.txt
运行......
解释:
eol=; 分号开头的行尾注释行
tokens=1,3- 将每行第1段,第3段和剩余地段分别赋予变量%%i,%%j,%%k
delims=,- (减号后有一空格)以逗号减号和空格为分隔符,空格必须放在最后
例子:
@echo off
for /f "skip=4 delims=" %%i in (’net user’) do echo %%i
pause
这样你本机全部账号名字就出来了把括号内的内容用两个单引号起来就表示那个当命令执行,for会返回命令的没行结果,加那个"delims=" 是为了让空格的行能正行显示出来,不加就默认只显示空格左边一列,应为默认的分隔符为空格或叫跳格键。
看了“BAT批处理文件for循环的基本格式方法”还想看:
1. 批处理文件
2. bat命令怎么批处理
3. bat批处理命令
4. 常用的文件格式集锦
5. bat批处理文件显示乱码怎么办
批处理for /l
查看命令行就知道了,解释如下:
FOR /L %variable IN (start,step,end) DO command
该集表示以增量形式从开始到结束的一个数字序列。
所以“/l”参数表示按某个规律输出数字序列。
对于第一个问题,外层循环的(1,1,5)表示从1开始,每次以步长为1递增,将值赋给变量%%n ,直到%%n为5的时候结束。内层循环表示从1开始,以步长1递增到当前%%n的值为止,所以输出
了
11
21 22
31 32 33
41 42 43 44
51 52 53 54 55
注意第二个问题的内层循环for没有参数“/l ”,当无该参数时,for的作用是枚举括号内的数字,
即让%%j依次等于1, 1, 2,外层循环每执行一次就会输出%%n 1, %%n 2, %%n 3。
所以结果是:
1 1
1 1
1 3
2 1
2 1
2 3
3 1
3 1
3 3
4 1
4 1
4 3
5 1
5 1
5 3
6 1
6 1
6 3
批处理中for循环变量赋值问题
预处理机制:批处理读取命令时是按行读取的(另外例如
for
命令等,其后用一对圆括号闭合的所有语句也当作一行),在处理之前要完成必要的预处理工作,这其中就包括对该行命令中的变量赋值。在不启用变量延迟,也不对变量动态捕获其扩展变化时,变量在预处理阶段不作改变
setlocal
enabledelayedexpansion
,就是启用变量延迟,我们可以形象的认为是启用了“对变量动态捕获扩展变化”。而
!
括起来的变量,就是要动态捕获扩展的目标变量,如果不需要,可以继续使用
%
括变量。
示例
@echo
off
SETLOCAL
ENABLEDELAYEDEXPANSION
for
/l
%%i
in
(1
1
10)
do
(
set
var=%%i
echo
!var!
启用延缓环境变量
echo
%var%
未启用延缓环境变量
)
电脑批处理for语句的for和in和do分别代表什么意思
For:循环命令
In:循环条件
Do:所要执行的任务
举例
for %%a in (1 2 3 4 5) do (echo %%a)
for 循环开始的标志,和java C等其他语言一样...
in 条件在1 2 3 4 5
do 显示 变量%%a
变量%%a 通过 in 条件 1 2 3 4 5循环赋值,echo %%a 依次显示
1
2
3
4
5
Windows怎么批处理命令for for批处理命令怎么用 批处理命令教程
Dos时代下的命令在Windows时代早以不被重视,Dos时代下的复杂命令在Windows时代中动动鼠标就能完成。到了Win7时代,90后甚至听都没有听说过,但Win7时代也不敢把Dos命令给彻底放弃,下面介绍一下我用for命令批处理远程强制关闭公司局域网内下班后忘记关机的电脑。
1、先看一下网内还都有谁没有关机,在运行里输入cmd打开命令行,我们公司的IP地址从192.168.1.101到192.168.1.112,因此在命令下输入for
%i
in
(101,102,103,104,105,106,107,108,109,110,111,112)
do
ping
192.168.1.%i后回车
2、批处理开始自动从101ping到112,有返回数据的就是没有关闭的电脑IP,如图
3、再针对没关闭电脑输入批处理强制关机命令for
%i
in
(101,104,105)
do
shutdown
Cs
Cf
Cm
192.168.1.%i回车
4、批处理依次从101强制关到105,在返回的信息中看到有一部电脑“拒绝访问”,这样要在这部电脑组策略里设置一下允许远程强制关机就可实现远程关机了,这个不在本篇叙述之列,我的经验里有“怎样在win7下强制远程关机”这一篇,敬请参阅。
批处理中for in do 到底什么意思,感觉千变万化的
简单点说,就是先用for给定好一些参数,然后读取或执行in后面括号里面的命令或文本,获取到内容后,赋值给for给定的那些参数,然后交给do去执行后续的相关操作。
至于千变万化,那就是因为有不同的操作,所以一直在变化。一旦您能学会for,那么批处理技术也算可以了。

更多文章:
teammate(teammate,company,partner)
2026年10月11日 06:10
javascript arraybuffer(javascript可以把base64编码转换成二进制代码吗求示例代码!)
2026年10月11日 04:00
text函数公式(excel中round和text函数的区别是什么)
2026年10月11日 03:50
google chrome打不开(chrome浏览器打不开怎么回事 浏览器打不开的处理方法)
2026年10月11日 02:00
websocket整合springboot(Springboot整合Websocket遇到的坑)
2026年10月11日 01:40
drawerlayout(android 怎样让drawerlayout设置的侧滑菜单的内容充满屏幕)
2026年10月10日 19:20
xor四位数怎么运算(单片机怎样用C语言实现4个数字间的异或)
2026年10月10日 17:50
perl数组中最多的元素(用perl实现,得到一个数组中重复次数最多的元素)
2026年10月10日 17:00



