(批处理for循环命令之文件搜索.doc
文本预览下载声明
批处理之for循环命令实现文件搜索
For /r命令实现文件搜索
批处理是windows系统中的一种脚本语言,由txt文件直接编写,扩展名为.cmd或.bat,
虽然作为一种脚本,但是灵活使用其中的命令对我们还是很有用的。
批处理中的for /r命令能够实现本地文件的搜索功能,首先介绍一下for /r命令实现文件搜索的用法:
For /r 路径 %%i in (关键字) do 要做的事
其中 路径 可以改为你自己要搜索的路径 如 C:\ 关键字则是你要搜索的文件名 如 qq.exe或 上海滩.mp3 等等。do 后面接的是你要计算机循环做的事情
例如:搜索计算机上C盘所有文件并显示出来,代码如下:
For /r C:\ %%i in (*) do echo %%i
运行效果:
结果将会列出C盘所有文件,因为通配符*代表一串字符,C盘所有文件名都与*匹配。
例如:我要计算机搜索 上海滩.mp3 这首歌 (假如在E盘的某个位置)并将其绝对路径显示出来,代码如下:
For /r E:\ %%i in (上海滩.mp3) do echo %%i
运行效果:
难道你的电脑上有这么多 上海滩.mp3 吗?其实不是 如果我们将代码改成:
For /r E:\ %%i in (上海滩.mp3) do if exist %%i echo %%i
效果如何呢?
运行效果如下:
所以,当我们在利用for /r命令搜索文件时,请加上if exist %%i 判断文件存在时才执行我们要循环做的事情
题目:搜索C盘里所有的mp3文件
代码如下:
For /r C:\ %%a in (*.mp3) do if exist %%a echo %%a
其中 %%后面的字母a可以用其他任意字母代替,如 %%s 、%%g等等,但必须保证在一组for循环命令中%%后面的字母必须相同,不能前面用%%i ,后面用%%a,这样是错误的。
运行效果:
如果只记得文件部分名称怎么办,如何搜索? 例如我只记得 一个MP3文件名中有一个“爱”字,这个文件不知道放在磁盘什么位置,于是代码如下:
For /r C:\ %%a in (*爱*.mp3) do if exist %%a echo %%a
For /r D:\ %%a in (*爱*.mp3) do if exist %%a echo %%a
For /r E:\ %%a in (*爱*.mp3) do if exist %%a echo %%a
根据你电脑有几个磁盘自行添加命令
运行效果:
结果将会列出所有带“爱”字的MP3文件
因此 当我们在设置关键字时需要灵活使用通配符*? *代表一串字符 ?代表一个字符,当设置的关键字最优时,能提高for /r命令帮我搜索文件的效率和准确率
以下代码利用了for /r 、set、if、重定向、变量延时等批处理命令并结合HTML代码形成了一个完整的文件搜索脚本程序,利用以下代码可迅速的自定义搜索计算机上的文件,搜索过程中具有较好的直观性,搜索的结果保存成一份以searchresult.html为文件名的html文档并放入和此脚本程序相同的目录中,搜索结果一目了然,利用html代码还可以对搜索到的文件执行“打开文件夹”的操作,增加了方便性。由于本人所学有限,并不能保证程序毫无瑕疵,欢迎指正。
代码如下:
@Echo off
mode con cols=35 lines=5 color 5B
setlocal enabledelayedexpansion
if %cd:~-1%==\ (set pth=%cd%) else (set pth=%cd%\)
Title 搜索本地文件
set Word=
set /p Word=输入关键字:
set chek1=%Word: =/%
set chek2=%Word: =-%
if %Word%== clsECHO 输入不能为空!ping -n 2 nul%0
if %chek1% neq %chek2% clsecho 禁止输入空格!ping -n 2 nul%0
Title 选择范围-文件搜索
VER|FIND 版本 6nul
if %errorlevel%==0 goto WIN7
if %errorlevel%==1 goto XP
:WIN7
CLS
echo 选择范围
CHOICE /C 1230z /n /t 15 /d z /m 1.全盘 2.除C盘 3自定义 0.返回
IF errorlevel 5 GOTO TIMEUP
IF errorlevel 4 %0
IF errorlevel
显示全部