批处理:FOR的参数/D和/R
来源:互联网 发布:迅雷mac版下载速度为0 编辑:程序博客网 时间:2024/06/08 06:28
FOR的参数
FOR常见的参数有/D、/R、/F、/L。内容比较多,需要逐一消化。
课时建议:
参数/D、/R与/L用一课时;参数/F用四课时,其中eol=和skip=用一课时,delims=、tokens=和usebackq各用一课时。下面逐一讲解。
一、/D参数——查询目录
格式:
FOR /D %%I IN (Command1) DO Command2
用法:
一句话总结:/D用于搜索目录(或文件夹)。
注意:
只搜索文件夹,不搜索文件。只搜索指定目录,不搜索子目录。
例211:搜索C盘下的所有目录:
@echo off
for /d %%i in (c:/*) do echo %%i
pause
运行结果是显示C盘下所有的文件夹名字,但不包含子目录。
例212:搜索当前目录中的文件夹:
@echo off
for /d %%i in (*) do echo %%i
pause
运行结果是显示批处理所在目录下的所有文件夹。
练习:
1、请比较查询命令DIR与FOR /D。
2、请编写一个只搜索文件名而不搜索文件夹名的批处理。
二、/R参数——遍历搜索
格式:
FOR /R %%I IN (Command1) DO Command2
FOR /R [[drive:]path] %%variable IN (set) DO command [command-parameters]
注意:
/R后可以指定路径[[drive:]path]。
用法:
一句话总结:遍历所有地址搜索文件。
包括搜索所有子目录。比/D搜索的范围要大。遍历?递归?全部,每个角落。
通常,/D只搜索当前目录或者指定目录,而不深入子目录。
而/R搜索的范围从当前目录或指定目录开始,深入所有子目录。无孔不入,大有活要见人死要见尸掘地三尺也要把你找出来的气势。
例221:搜索当前目录下的所有文件。
@echo off
for /r %%i in (*) do echo %%i
pause
运行结果将显示,当前目录下的所有文件以及该目录下所有子目录里的所有文件。
例222:搜索C盘里所有的扩展名为exe的文件。
@echo off
for /r c:/ %%i in (*.exe) do echo %%i
pause
运行结果将显示C盘和C盘里各个文件夹下的exe文件。杀毒很有用哦。
例:搜索C盘千千静听播放器:
@echo off
for /r c:/ %%i in (ttplayer.exe) do if exist %%i start %%i
pause
运行结果将打开千千静听,前提是你的千千静听装在C盘。使用if exist的目的是避免文件不存在时不断的提示错误。
检查了一下,无法读出长文件名,思考中。如果你的千千静听默认安装在C盘,更简单的方法是:
start %Progra~1%/ttplayer/ttplayer.exe
讲解:
一句命令就足够了,效率啊!我的在D盘都找出来了!
用到环境变量的内容。不支持长文件名所以使用了%Progra~1%代替Program Files。
例223:搜索F盘里所有目录。
@echo off
for /r f:/ %%i in (.) do echo %%i
pause
运行结果将显示F盘以及F盘下所有的文件夹。显示结果后面都带有一个点号不懂如何消除,一直在思考一个完美的方式,请诸位指点。
练习:
1、请说说FOR /R的作用。
2、请比较参数/D和/R。
3、请编写一个全盘搜索QQ.exe的批处理。
4、请编写一个搜索C盘里所有名字带“SYS”的文件夹的批处理。
三、/L 参数——序列 格式: FOR /R %%I IN (Command1) DO Command2 FOR /L %%variable IN (start,step,end) DO command [command-parameters] 用法: 一句话总结:给指定对象建立序列。 /L参数是以增量形式从开始到结束的一个数字序列的迭代数值范围。 使用迭代变量设置起始值 (Start#),然后逐步执行一组范围的值,直到该值超过所设置的终止值 (End#)。 /L 将通过对 Start# 与 End# 进行比较来执行迭代变量。如果 Start# 小于 End#,就会执行该命令。如果迭代变量超过 End#,则命令解释程序退出此循环。还可以使用负的 Step# 以递减数值的方式逐步执行此范围内的值。 用FOR给1到5这几个数字排一下顺序。 例:递增方式。 @echo off for /l %%i in (1,1,5) do @echo %%i pause 运行结果是生成序列:1 2 3 4 5。 例:递减方式。 @echo off for /l %%i in (1,-1,5) do @echo %%i pause 运行结果是生成序列:5 4 3 2 1。 注意: 集合(start,step,end)中,start表示序列的起始值,end表示序列的结束值,两者共同决定了序列的取值范围。 step控制着start和end的生成方式。当step为正时是递增序列,当step为负时是递减序列。如果step=0则循环下去? 例:start,step,end三者的数值关系。 @echo off for /l %%i in (2,2,13) do echo %%i pause>nul 运行结果分行显示2、4、6、8、10、12 讲解: start,step,end三者的数值关系是: start > end 当step为正时,start+step决定%%i的最小取值范围,end决定%%i的最大取值范围。 当step为负时,start+step决定%%i的最大取值范围,end决定%%i的最小取值范围。 例:创建三个以数字1、2、3命名的文件夹。 @echo off for /l %%i in (1,1,3) do md %%i exit>nul 运行结果将在当前目录下创建三个以数字命名的文件夹。 讲解:“毒虫”们一看见该命令无比兴奋,如果把(1,1,3)里面的3改成九位数的3那岂不是…… 个人不是很熟悉,但看人家写的作品时倒是经常出现这个/l。请看第五节第三个案例《神奇读心术》。 练习: 1、请用所学的批处理知识说说(a,-1,z)的意思。 2、请编写一个打开十个IE浏览器窗口的批处理。 3、请编写一个可以名字是随机数字扩展名为.exe的批处理。
- 批处理:FOR的参数/D和/R
- 批处理中for的参数的用法
- 批处理中for的参数的用法
- 批处理for命令/f参数的用法
- dos命令中for /r和for /d的简单用法
- (精解篇)批处理有关for的参数详解及具体应用
- 【bat】批处理教程之for的/f参数
- 批处理:FOR的参数/F与eol、skip
- 批处理:FOR的参数/F之delims详解
- for /d /r /l /f
- 批处理 for的格式
- 批处理的for语句
- 批处理 for 的用法
- R的图形组成和图形参数
- 带参数的批处理
- 带参数的批处理
- 编译批处理 -d. 的问题
- R批处理
- 拯救地球的最后机会,就在哥本哈根峰会
- Fastreport使用经验(转)
- Eucalyptus 驱动 Ubuntu 9.10 商业云计算
- 离散化+线段树 POJ 2528 (Mayor's posters)
- 在delphi中取存储过程的返回值
- 批处理:FOR的参数/D和/R
- Protues 7.6仿真430 + LCD 简易贪食蛇
- 我的代码总结之.NET连接数据库对象分析一dataAdaper
- 生成素数的算法1,2,3
- 编写Java程序的三十个基本规则
- Discuz!的Memcache缓存实现
- (转帖)vs2008 90天试用版激活
- Linux新添加用户
- 批处理:FOR的参数/F与eol、skip