批处理for循环命令之文件搜索,搜索磁盘文件。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
批处理之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%"=="" cls&ECHO 输入不能为空!&ping -n 2 127.0.0.1>nul&%0
if %chek1% neq %chek2% cls&echo 禁止输入空格!&ping -n 2 127.0.0.1>nul&%0
Title 选择范围-文件搜索
VER|FIND "版本6">nul
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 3 GOTO CUSTOM
IF errorlevel 2 GOTO EXCEPT
IF errorlevel 1 GOTO ALL
:XP
cls
ECHO 1.全部磁盘 2.除C盘外的磁盘
ECHO 3.自定义范围0.返回
set Range=
set /p Range=输入序号选择范围:
set chek1=%Range: =/%
set chek2=%Range: =-%
if "%Range%"=="" cls&ECHO 输入不能为空!&ping -n 2 127.0.0.1>nul&goto XP
if %chek1% neq %chek2% cls&echo 禁止输入空格!&ping -n 2 127.0.0.1>nul&goto XP IF %Range%==1 GOTO ALL
IF %Range%==2 GOTO EXCEPT
IF %Range%==3 GOTO CUSTOM
IF %Range%==0 %0
cls&echo 输入无效!&ping -n 2 127.0.0.1>nul&goto XP
:CUSTOM
mode con cols=36 lines=8 & color 5B
CLS
Title 自定义范围-文件搜索
ECHO 输入多个盘符请用,隔开如:C,D,E,F