dos中的for命令简单使用

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

http://blog.csdn.net/lyhdream/article/details/14214657



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值