文件搜索与提取批处理

内容介绍

学习编写批处理命令,目的是为了更方便的地处理文件,节省时间和提高工作效率,以下代码为多次修改测试无误的结果,主要功能包括:

  1. 解决Window10资源管理器文件搜索不能精确匹配的问题
  2. 可用来搜索指定类型或包含指定字符串的文件
  3. 可用来批量提取文件名称并保存到文本文件
  4. 可用来将搜索得到的文件直接提取到指定的文件夹

批处理代码

@echo off
setlocal enabledelayedexpansion
echo *******************************
echo *                             *
echo *   【文件搜索与提取批处理】  *
echo *        作者:wonzeng        *
echo *                             *
echo *******************************
echo %0
call :menu


:menu
echo.
echo 【文件查找范围】
rem 搜索的文件夹
set /p folder=请输入路径:
rem 提取的文件名称保存的txt文本的路径
set outname=C:\Users\Lenovo\Desktop\TempOutFile
rem 提取的文件的保存的位置
set outfolder=%outname%\OutFile
rem 判断路径是否存在
if exist "%folder%" (
	call :query "%folder%"
) else (
	echo 文件夹:"%folder%" 不存在!
	call :menu
)



:query
echo 【待查找文件名】
set /a cnt=0
echo.
echo 注:执行以下操作,若默认临时文件夹【%outname%】中存在文件,则会被清空!
echo.
set /p info=请输入待查找的字符串:
echo.
if not exist "%outfolder%" (
	rem 输出文件夹不存在则创建
	md %outfolder%
) else (
	echo y|del "%outfolder%"
)
echo.
if exist "%outname%\OutFile.txt" (
	echo y|del "%outname%\OutFile.txt"
)
rem 当输入为空时,将会遍历该目录下所有文件
for /r "%folder%" %%i in ("*%info%*") do (
	set /a cnt+=1
	echo [!cnt!] %%i
	rem 路径名称保存到OutFolderName.txt
	echo %%i>>%outname%\OutFile.txt
)
rem 数量大于0
if %cnt% gtr 0 (
echo 共找到 【%cnt%】 条记录!
echo.
echo 按任意键可将搜索到的文件复制到以下文件夹:【%outfolder%】
pause
For /F "tokens=*" %%i In (%outname%\OutFile.txt) do (
 cd /d "%%~dpi"
 copy "%%i" "%outfolder%"
 )
) else (
	echo 没有找到任何记录!
)
set info=<nul
set folder=<nul
call :menu

实现效果

文件搜索与提取批处理_第1张图片
文件搜索与提取批处理_第2张图片

你可能感兴趣的:(批处理)