批处理for循环命令之文件搜索,搜索磁盘文件。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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

相关文档
最新文档