龙空技术网

BAT|整个硬盘各级文件夹查找某一类型的文件及获得其路径文本

小智雅汇 323

前言:

今天你们对“遍历文件名 bat”大约比较注重,朋友们都想要学习一些“遍历文件名 bat”的相关资讯。那么小编同时在网摘上收集了一些关于“遍历文件名 bat””的相关文章,希望大家能喜欢,咱们快快来学习一下吧!

任务:整个硬盘各级文件夹查找某一类型的文件及获得其路径文本。

如果用操作系统的搜索功能,可以看到其路径,但会把一些文件名(不是文件类型)的文件也搜索出来,且无法简单得到其文本:

变通的方法就是用批处理bat。

首先要了解强大的for命令:

其中的for /r [[driver:]path] %var in (fileset) do comm就可以以[path]指定为起点的整个目录树进行处理。

核心的代码只有几行:

其中%%B是用“set /p b=输入查找文件扩展名:”输出的扩展名。

>>是管道命令,将命令输出作为文件的输入。

第一个for循环处理各个硬盘分区,第二个for循环遍历各级文件夹。

最终批处理运行的效果:

如果想在特定的文件b中查找特定的内容a可以使用以下bat语句:

type "%%b" | find /i "%a%" && echo %%b>>c:\virus.txt

|也是管道命令,将上一个命令的输出,作为下一个命令的输入,如"dir /a/b |more"就可以逐屏的显示dir命令所输出的信息。

附bat代码:

@echo offsetlocal enabledelayedexpansionecho. >c:\virus.txtcolor 3aecho.set /a n = 0set /p b=输入查找文件扩展名:if /i "%b%"=="" cls && goto fhecho 系统正在查找文件,请耐心等候......echo.for %%a in (C D E F) do (cd /d %%a:\	for /r %%b in (*.%b%) do (		if exist "%%b" (			echo %%b			echo %%b>>c:\virus.txt			set /a n+=1			echo 现查到%b%文件个数:!n!		)	))type c:\virus.txt | find /i "\" && goto noecho.echo 文件内容没找到!del c:\virus.txt>nul 2>nulecho.pauseexit:no::clsecho.echo 文件查找完毕并记录在c:\virus.txt中 !echo 现查到%b%文件总的个数:!n!echo.echo 是否打开文本查看记录 ?echo.echo 选择" Y "查看。 选择" N "退出。echo.set /p Choice=Y/N: IF /I '%Choice:~0,1%'=='y' goto AIF /I '%Choice:~0,1%'=='n' goto Bpauseexit:Astart c:\virus.txtexitpause:bexit  

-End-

标签: #遍历文件名 bat