第四节FOR的参数
FOR常见的参数有/D、/R、/F、/L。内容比较多,需要逐一消化。
课时建议:
参数/D、/R与/L用一课时;参数/F用四课时,其中eol=和skip=用一课时,delims=、tokens=和usebackq各用一课时。下面逐一讲解。
一、/D参数——查询目录
格式:
FOR/D%%IIN(Command1)DOCommand2
用法:
一句话总结:/D用于搜索目录(或文件夹)。
注意:
只搜索文件夹,不搜索文件。只搜索指定目录,不搜索子目录。
例211:搜索C盘下的所有目录:
@echooff
for/d%%iin(c:*)doecho%%i
pause
运行结果是显示C盘下所有的文件夹名字,但不包含子目录。
例212:搜索当前目录中的文件夹:
@echooff
for/d%%iin(*)doecho%%i
pause
运行结果是显示批处理所在目录下的所有文件夹。
练习:
1、请比较查询命令DIR与FOR/D。
2、请编写一个只搜索文件名而不搜索文件夹名的批处理。
二、/R参数——遍历搜索
格式:
FOR/R%%IIN(Command1)DOCommand2
FOR/R[[drive:]path]%%variableIN(set)DOcommand[command-parameters]
注意:
/R后可以指定路径[[drive:]path]。
用法:
一句话总结:遍历所有地址搜索文件。
包括搜索所有子目录。比/D搜索的范围要大。遍历?递归?全部,每个角落。
通常,/D只搜索当前目录或者指定目录,而不深入子目录。
而/R搜索的范围从当前目录或指定目录开始,深入所有子目录。无孔不入,大有活要见人死要见尸掘地三尺也要把你找出来的气势。
例221:搜索当前目录下的所有文件。
@echooff
for/r%%iin(*)doecho%%i
pause
运行结果将显示,当前目录下的所有文件以及该目录下所有子目录里的所有文件。
![批处理:FOR的参数/D和/R(原创)](http://img.aihuau.com/images/31101031/31025128t01a1913b9bd8bdcafb.jpg)
例222:搜索C盘里所有的扩展名为exe的文件。
@echooff
for/rc:%%iin(*.exe)doecho%%i
pause
运行结果将显示C盘和C盘里各个文件夹下的exe文件。杀毒很有用哦。
例:搜索C盘千千静听播放器:
@echooff
for/rc:%%iin(ttplayer.exe)doifexist%%istart%%i
pause
运行结果将打开千千静听,前提是你的千千静听装在C盘。使用ifexist的目的是避免文件不存在时不断的提示错误。
检查了一下,无法读出长文件名,思考中。如果你的千千静听默认安装在C盘,更简单的方法是:
start%Progra~1%ttplayerttplayer.exe
讲解:
一句命令就足够了,效率啊!我的在D盘都找出来了!
用到环境变量的内容。不支持长文件名所以使用了%Progra~1%代替ProgramFiles。
例223:搜索F盘里所有目录。
@echooff
for/rf:%%iin(.)doecho%%i
pause
练习:
1、请说说FOR/R的作用。
2、请比较参数/D和/R。
3、请编写一个全盘搜索QQ.exe的批处理。
4、请编写一个搜索C盘里所有名字带“SYS”的文件夹的批处理。
总结:
批处理的文件搜索参数/r和文件夹搜索参数/d只做一般使用,方便使用更重变量参数%%~i。但不适用于搜索隐藏文件,搜索指定属性的文件效率较低,还是dir比较通用。