注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

民主与科学

独立之人格,自由之思想

 
 
 

日志

 
 

for命令详解(上)  

2011-04-12 20:59:49|  分类: DOS批处理 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

for 命令是一个比较复杂的命令,主要用于参数在指定的范围内循环执行命令。 
批处理文件中使用 FOR 命令时,指定变量请使用 %%variable 
一,for用
for { %%variable|%%variable } in (set) do command [ CommandLineOptions] 
%%variable
指定一个单一字母可替换的参数。 
(set)
指定一个或一组文件。可以使用通配符。 
command
指定对每个文件执行的命令。 
command-parameters
为特定命令指定参数或命令行开关。 

示例1

@echo off

for %%i in (c d e f) do (

    cd /d %%i:

    for /f "delims=" %%a in ('dir /s/b *.mp3') do (@echo %%a)

)

exit

搜索CDEF盘上所有的MP3。什么盘?cdef。什么文件?mp3。经过两层过滤检索到了硬盘上所有的MP3
注意1:在批处理件中使用 FOR 命令时,指定变量请使用 %%variable 
而不要用 %variable。变量名称是区分大小写的。

注意2:空格、跳格、等号、分号都可以作为元素的隔离符号。

注意3do 后的括号就可以把多条命令嵌套在里面。

实例1

for %%i in (robin hudashi zhengsheng glen) do (

   echo hello,%%i!

   echo "how are you?"

)

实例2

for %%i in (robin=hudashi=zhengsheng glen) do (

   echo hello,%%i!

   echo "how are you?"

)

实例3:列出当前目录下都有哪些文

for %%i in (*.*) do echo "%%i" 

实例4列出当前目录下所有的文本文

for %%i in (*.txt) do echo "%%i" 

实例5出只用两个字符作为文件名的文本文

for %%i in (??.txt) do echo "%%i" 

实例6:找出名字最大的文件

set folder_name=

for /f "delims=" %%i in ('dir %out_xml_folder_parent%\* /b') do (

echo %%i

if "!folder_name!" =="" (

set folder_name=%%i

) else (

if "%%i" GTR !folder_name! (

set folder_name=%%i

)

)

)

set out_xml_old_folder=%folder_name%

注意1列出当前目录下各种文件的方法中,最简单的还是用dir命令,但是,从以上代码中,各位可以加深对for语句执行流程的理解(用到了通配符*?); 

注意2以上代码不能列出含有隐藏或系统属性的文

注意3:上面列出当前目录下文的命令,并不会列出子目录下的文

 

如果命令扩展名被启用,下列额外的 FOR 命令格式会受到 
支持: 
二,for /D 用法
FOR /D %variable IN (set) DO command [command-parameters] 

如果集中包含通配符,则指定与目录名匹配,而不与文件 
名匹配。 
三,for /R 用法
FOR /R [[drive:]path] %variable IN (set) DO command [command- parameters] 

检查以 [drive:]path 为根的目录树,指向每个目录中的 
FOR
语句。如果在 /R 后没有指定目录,则使用当前 
目录。如果集仅为一个单点(.)字符,则枚举该目录树。 
实例6列出G:\projects\work目录下所有的文本文

for /r G:\projects\work %%i in (*.txt) DO (@echo %%i)

四,for /L 用法

FOR /L %variable IN (start,step,end) DO command [command-para ]
该集表示以增量形式从开始到结束的一个数字序列。 
因此,(1,1,5) 将产生序列 1 2 3 4 5(5,-1,1) 将产生 
序列 (5 4 3 2 1) 
实例7

for /L %%i in (1 1 5) DO (@echo NO:%%i)


  评论这张
 
阅读(703)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017