文档详情

(批处理for循环命令之文件搜索.doc

发布:2017-01-18约字共10页下载文档
文本预览下载声明
批处理之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
显示全部
相似文档