4

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

 3 years ago
source link: https://zhang.ge/231.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
Jager · 12月20日 · 2013年bat · for · 全盘查找 · 批处理 · 遍历 2165次已读

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


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

@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
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

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

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


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK