-
对所有的批处理初学者来说,
for
的应用是最
难理解以及掌握的。本文由浅入深,为大家专
门讲解
for
p>
的用法,希望大家喜欢。
首先应该明确的
是
,for
不是一个简单的命令,它的用法比较复杂
,
它还可以带四个参数
(/L
/D
/R
/F),
其中
:/L
和
/F
参数是最经常用到的。当然,它本身也可以不带参数,下面我们通过具
体的
例子来讲解
for
的运用。
一、不带参数的
for
:
@echo
off
for
%%i
in
(1
2
3
4
5)
do
echo
%%i
pause
p>
将以上代码保存为批处理文件
(
如何保存<
/p>
?)
,然后运行,可以发现屏幕上显示
1
2 3 4 5(
每字
一行
)
是不是明白了一些?它的整个运行机制我们可以这样看:
for
不停的从括号中拿出
5
个
“
东西
”
来
(以空格做间隔)
,
并将这
5
个
“
东西
”
依次传给临时变量
%%i
,
同时把这个变量
echo
出来
..
..
从这个例子我们可以看出,
for
的基本用法是:
for
变量
in
(
目标
) do
干什么
?
变量常用
%%i
来表示,当然也可以
换成
%%j
;目标就是待处理的对象集合,比如这里的
1 2
3 4
5
;这里的干什么的内容为:批处理命令。
< br>【相关习题:
】将你的名字用
for
命令分三行显示出来!
!
!
二、带参数
/L
的
for
(
这里的
参数
/L
可以理解为
的意思,代表一个数列
)
先看测试代码:
复制内容到剪贴板
代码
:
@echo
off
for
/l
%%i
in
(1
1
5)
do
echo
%%i
pause
显示结果也为:
1 2
3 4 5(
每字一行
)
它的意思和上面的意思差不多,但是括号中的对象却不需要
写成
1 2 3 4 5
的形式了,而
是:
1 1
5
,因为它启用了参数
/L
,就是告诉
for
,这个括号里的对象是个数
列,怎样的数
列?就是以
1
开始,步长
为
1
,结束值为
5
的一个等差数列,再举个实例:
复制内容到
剪贴板
代码
:
::
显示
从
10 - 20
的所有偶数:
@echo
off
for
/l
%%i
in
(10
2
20)
do
echo
%%i
pause
【相关习题:
】显示
1~20
间能被
5
整
除的整数
三、带参数
/f
< br>的
for
(这里的参数
/F
p>
可以理解为
“
file
”
的意思,代码处理对象为文本串)
参考教程:
for
命令
/f
参数
通俗讲解
四、
for
的
/D
和
/R
参数(这两个参数个人比较少用)
1>/D
参数(常用来查询
当前目录
或者
指定目录的文件夹
)
基本用法:
FOR /D %variable IN
(set) DO command [command-parameters]
如
:查询
F
盘根目录下的文件夹
复制内容到剪贴板
代码
:
@echo
off
for
/d
%%i
in
(f:*)
do
echo
%%i
pause>nul
如果省略
括号中的
,则会直接查询
批处理
所在目录的文件夹
假设
本批处理文件
保存在:
F:test
下
运行以下批处理代码,将会查询
F<
/p>
:
test
下的文件夹
< br>
复制内容到剪贴板
代码
:
@echo
off
for
/d
%%i
in
(*)
do
echo
%%i
pause>nul2>
/r
参数
基本用法:
FOR /R [[drive:]path]
%variable IN (set) DO command [command-parameters]
检查以
[drive:]path
为根的目录树中,所有符合(
set
)
的文件或者文件夹。如果在
/R
后
没有指定目录,则使用当前
目录。如果集仅为一个单点
(.)
字符,则枚
举该目录树。
用法示例:
枚举
F
:盘下所有的
文件
复制内容到剪贴板
代码
:
@echo
off
for
/r
f:
%%i
in
(*)
do
echo
%%i
pause>nul
枚举
F
:盘下所有的
.bat
文件
< br>(
包括子目录)
,则:
复制内容到剪贴板
代码
:
@echo
off
for
/r
f:
%%i
in
(*.bat)
do
echo
%%i
pause>nul
如果省略以上代码中的
< br>F:
,则会列举当前目录
所有
符合(
set
)的文件
如:列举批处理所在目录的
所有
批处理文件(包括子目录)
复制内容到剪贴板
代码
:
@echo
off
for
/r
%%i
in
(*.bat)
do
echo
%%i
pause>nul
for
命令
/f
参数
通俗讲解
for /f
参数最为复杂
,
难懂和常用
.
在刚学时确实费了我不少脑筋
,
下面就我个人的理解
,
给新手们通俗的讲讲
,
也好让新手少走
些弯路
.
格式
:
::
例一
:
复制内容到剪贴板
代码
:
for
/f
=1
tokens
=1,2*
delims
=
%%a
in
(a.t
xt)
do
echo
%%a
%%b
%%c
pause
先从引号内的东西讲起
,
很多新手对这些难以理解
,
因为
for /?
翻译的简直是一塌糊涂
.
skip=
tokens=
delims=
这
三项是用的最多的
,
根据需要
.
可以不用
,
可以一起使用
,
也可以只使用一个或两个
.
但
是不管使用几个都要用引号将它们扩起来
.
当然不使用时
,
自然就不需要引号了
.
skip=
for
循环文本内容是以
行为单位
,
从上至下进行的
,skip
=1
意识就是跳过文本的第一行
,
即不
循
环第一行
那么
skip=2
自然就是跳过前两
行了
,
依次类推
.........
delims=
先讲这句
delims=
后面的字符的意识是
,
将文本每一行的内容以
delims=
后面的字
符分割成若干列
.
假设
某一行的内容是
111,222.333
444/555
我们用下面的语句
::
例二
:
复制内容到剪贴板
代码
:
for
/f
5
delims
=,./
%%a
in
(a.t
xt)
do
echo
%%a
%%b
%%c
%%d
%%e
pause
显示结果是
111 222 333
444 555
解释
:
意识就是把
111,222.333 444/555
以
,./
和空格
(
p>
不分先后
)
分成了
5
列
.
注意代码中
/
和
后面有个
空格
,
使用中要注意空格要放到最后
,
如
这样就不行了
.
那如果我们不使用逗号来分割会如何呢
?
如
:
那么就会分割成
111,222
333
444
555
看出区别了吗
?delims=
后面可以是多个字符
,
p>
可以是空格
,
也可以什么都没有
.
什么都没有代表什么呢
?
就是不以任何东西为分割符
,
也是整行的内容了
.
因为
for
默认是以
,;
和空格作分割符的
,
所以一般要取得整行内容通常会用
这样的形式来取
消
for
的默认分割符
.
-
-
-
-
-
-
-
-
-
上一篇:高考语文文言文文化常识(最全版)
下一篇:专四语法易错题整理讲解