您的位置:首页 > 其它

dos中的for命令简单使用

2013-11-03 23:06 691 查看
1、不添加任何参数,for循环显示非目录文件

for命令帮助信息是这样写的:

/**

FOR %variable IN (set) DO command [command-parameters]

%variable 指定一个单一字母可替换的参数。

(set) 指定一个或一组文件。可以使用通配符。

command 指定对每个文件执行的命令。

command-parameters

为特定命令指定参数或命令行开关。

在批处理程序中使用 FOR 命令时,指定变量请使用 %%variable

而不要用 %variable。变量名称是区分大小写的,所以 %i 不同于 %I.

*/

目录如下:



建立一文件 test.bat ,复制以下代码:

@echo off
for %%i in (C:\Users\Administrator\Desktop\test\*) do echo %%i
pause

双击运行结果:



可以明显的看到图中并没有显示目录

2、通过 /d 参数显示目录文件:

for命令帮助信息是这样写的:

/**

FOR /D %variable IN (set) DO command [command-parameters]

如果集中包含通配符,则指定与目录名匹配,而不与文件名匹配。

*/

复制以下代码:

@echo off
for /d %%i in (C:\Users\Administrator\Desktop\test\*) do echo %%i
pause

可以看到,加了参数 /d 后,只显示了目录文件

3、通过 /R 参数,显示目录的级

for命令帮助信息是这样写的:

/**

FOR /R [[drive:]path] %variable IN (set) DO command [command-parameters]

检查以 [drive:]path 为根的目录树,指向每个目录中的 FOR 语句。

如果在 /R 后没有指定目录规范,则使用当前目录。如果集仅为一个单点(.)字符,

则枚举该目录树。

*/

我们在bbbbb目录下在创建ccc和ddd目录,在ccc目录里再穿件eee目录:

复制一下代码,栓剂运行:

@echo off
for /R C:\Users\Administrator\Desktop\test %%i in (.) do echo %%i
pause

运行结果:



可以看到命令行将目录的各级都显示出来了

4、fort通过参数 /L 来实现递增递减循环:

for命令帮助信息是这样写的:

/**

FOR /R [[drive:]path] %variable IN (set) DO command [command-parameters]

检查以 [drive:]path 为根的目录树,指向每个目录中的 FOR 语句。

如果在 /R 后没有指定目录规范,则使用当前目录。如果集仅为一个单点(.)字符,

则枚举该目录树。

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)

*/

复制一下代码:

@echo off
for /L  %%i in (1,1,4) do echo %%i
pause

运行结果:



如果改为: for /L %%i in (4,-1,2),则将以2为递减循环。

5、通过参数 /F 来对文件进行操作:

这里帮助信息太多,就不列出来了,建立一个文件,输入一下类容:

1234567890

aaaaaaaaaa

bb$bbbb*bb

cccccccccc

dddddddddd

eeeeeeeeee

ffffffffff

gggggggggg

格式如下:

FOR /F ["options"] %variable IN (file-set) DO command [command-parameters]

FOR /F ["options"] %variable IN ("string") DO command [command-parameters]

FOR /F ["options"] %variable IN ('command') DO command [command-parameters]

其中“options”有这些:eol=c, skip=n, delims=xxx, tokens=x,y,x-n, usebackq

首先我们来看elo=c,他表示忽略以c开头的行,例如复制以下代码:

@echo off
for /f "eol=f" %%i in (C:\Users\Administrator\Desktop\test\hello.txt) do echo %%i
pause

执行结果:



可以看到fffffffffffff的那一行并没有被打印。

skip=n,表示跳过开头n行,例如复制以下代码:

@echo off
for /f "skip=2" %%i in (C:\Users\Administrator\Desktop\test\hello.txt) do echo %%i
pause

执行结果:



可以看到数字行和aaaaaaaaaaaaaaa行没有打印出来;

delims=xy,表示在每一行中以x为分隔符号,x和y后面的字符忽略,复制以下代码:

@echo off
for /f "delims=$" %%i in (C:\Users\Administrator\Desktop\test\hello.txt) do echo %%i
pause

执行结果:



对于tokens=n,m,n-m,参考:

http://blog.sina.com.cn/s/blog_4b795cc10100ez8d.html

对于usebackq,参见:

http://www.360doc.com/content/10/0706/05/1438974_37156664.shtml

6、对于set里面包含多条命令的方法

如下代码:

@echo off
for /f "delims=" %%i in ('dir /b .. ^| find  "txt"') do echo %%i
pause

筛选某个目录下的txt文件,在管道前加 ^ 符号。

参见:http://bbs.csdn.net/topics/340021271

/article/8916312.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: