脚本编程

[持续更新]批处理全盘搜索系列案例

Jager · 12月20日 · 2013年 · · · · 3190次已读

虽然现在全盘搜索相关的实用软件很多也很强大,但是在手头上无法下载的时候,批处理这个"资深前辈"又得派上用场了,接下来介绍的代码均为全盘范围的批处理


案例一、列出我的电脑中的所有硬盘分区

@echo off   
title 列出硬盘分区   
for %%i in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do (    
        if exist %%i:\ echo %%i  
)    
pause>nul

简单说明:代码使用 for 依次循环读取 C 到 Z,并加上:\进而使用 if exist 判断路径是否存在,存在则打印到屏幕上。


案例二、全盘查找某个文件

(来自我的百度回答)

知友问:
不知道文件路径,只知道名字,怎么制作 bat 运行文件?

如题,要做 1 个打开文件的 bat,知道是用 star +路径。但是我没有路径只知道名字,而且我这个电脑没有那个文件。是学校的机子。。。求一个指令可以搜索直接运行,就像菜单中的”运行“那样

我给出的代码:

@echo off    
:start    
cls    
set /p filename=请输入你要打开的文件名(包括后缀):    
echo=    
echo 全盘查找%filename%中,请稍后......    
for %%i in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do (    
        if exist %%i:\ pushd %%i:\ && for /r . %%a in (%filename%) do (     
                 if exist "%%a"  start "" "%%a"    
       )     
)    
echo %filename%全盘查找完毕,任意键开始下一个文件的查找......    
pause>nul    
goto start

简单说明:在案例一的基础上嵌套了一个 for /r 遍历目录循环,但存在某一个分区的时候,则执行内嵌的 for 循环,遍历分区搜索关键字,若找到含有关键字的文件则打开(其实那个判断文件是否存在有点多此一举,为了代码不出错我还是加上了)。


案例三、全盘搜索并删除包含关键字的所有文件

(来自我的百度回答)

知友问:
Dos 批量删除文件名带有~$的.doc 文件 请看问题内容
我的电脑里大量的带有~$的.doc 文件
想用 DOS 命令手动删除
文件夹搜 这个办法的 别凑热闹
回答 修改 Offic 先选项 也别凑热闹

我给出的答案:
以下代码保存为 bat 文件,执行后全盘搜索符合你要求的 doc 文件,然后删除,并将删除结果写到批处理同目录的 result.log,为避免误删除,已将删除功能屏蔽,仅显示目标文件具体位置,若要让删除生效,直接将代码第四行的【echo】删除即可,希望对你有用:

@echo off    
for %%i in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do (    
        if exist %%i:\ pushd %%i:\ && for /r . %%a in (*~$*.doc) do (    
                echo del /s /q /f "%%a"    
       ) )>>result.log    
pause

简单说明:此代码和案例二非常相似,只是这个代码中不是匹配完整文件名,而是前后使用*号包裹关键字进行通配搜索。

更多案例,待后续更新,敬请期待!若有其他需求,请留言~

0 条回应