@echo off
TASKKILL /S system /F /IM 123.exe /T
@echo off
:: 8-31 增加记录日志功能
:: 9-1 增加全盘搜索、完全匹配查找功能
:: 9-2 增加多文件搜索,可自定义添加过滤路径
:: 9-3 增加了搜索文件名时检测“路径中含有搜索的文件名字符串而文件名中没有”就删除掉这个路径
增加了搜索文件名时检测“路径中含有搜索的文件名字符串”就删除掉这个路径,这只是个路径
:: 9-4 增加了搜索文件名过滤,不让用户搜索完全匹配的"windows","system32"等,用户可手动添加删除
:: 各临时文件说明
:: %dati%_9.txt 高级搜索中存放要过滤的文件夹的路径的值
:: %dati%_8.txt 高级搜索中存放"检查本地磁盘并判断类型"查到的值
:: %dati%_7.txt 高级搜索中存放所有本地磁盘盘符的值
:: %dati%_4.txt 高级搜索中存放直接dir路径未经过滤的值
:: %dati%_6.txt 高级搜索中存放直接dir路径并find names后 未经过滤的值
::
:: %dati%_temp.txt 为了高级搜索后确认是否再进行文件名完全匹配查找而生成的暂时临时文件
:: %dati%_1.txt 模糊搜索中存放要过滤的文件夹的路径的值(默认只是本程序所在当前文件夹)
:: %dati%_2.txt 模糊搜索中存放直接dir路径未经过滤的值
:: %dati%_3.txt 模糊搜索中存放过滤路径后dir的值,第一行空,第二行显示------*.txt
:: %dati%_10.txt 高级搜索dir路径并find names后要find_nx而长生的临时文件
:: g_names.txt 高级搜索中存放要查找的文件名s
:: 原理:通过dir路径|find符合所要搜索文件名的字符串来搜索
:000000
cls
mode con lines=30
title 查找文件并操作(查看路径\复制\删除),记录日志 by:Ye - *
echo ________________________________________________________________________________
echo 使用说明:
echo 复制文件日志 copy_log.txt 复制文件默认复制到目录 copy\
echo 删除文件日志 del_log.txt 删除文件默认备份目录 del_backup\
echo 批量恢复日志 backup_log.txt 搜索到文件时的搜索文件名日志 fc_name.txt
echo ________________________________________________________________________________
echo 注意事项:
echo 1 建议使用时请把本程序放在一个单独的文件夹下,因为默认是不搜索程序当前所在目
echo 录的,还有工作中要生成好多临时文件在目录下
echo 2 输入要查找的文件名时,为了更准确的找到文件请尽量带上后缀
echo 连在一起的字符搜索就好,不要使用*,如搜索***x.txt,直接填x.txt搜索就好
echo 3 输入搜索路径时,如搜索 c 盘则输入 c:\ ,建议去地址栏中直接复制地址粘贴过来
echo 4 任何位置输入半角状态下的以下11个符号中的任何一个都会引起无法预料的错误
echo 它们分别是\、/、:、*、?、"、<、>、(、)、|
echo 除路径中可以输入冒号(紧跟盘符)和反斜杠符号
echo 5 使用本程序建议系统时间使用24小时制
echo ________________________________________________________________________________
echo 按任意键进入查找......
pause>nul
:start
cls
mode con lines=24
echo ________________________________________________________________________________
echo.
echo 模糊搜索:只支持单文件单目录搜索,不支持过滤目录,不支持文件名完全匹配查找
echo.
echo 高级搜索:支持多文件单目录或全盘同时搜索,支持过滤目录,支持文件名完全匹配查找
echo.
echo m 模糊搜索 ^| g 高级搜索
echo ________________________________________________________________________________
set mg_xz=
set /p mg_xz= 请输入操作代码:
if "%mg_xz%"=="" (echo 无效动作 & pause && goto start)
for %%i in (m g) do if %mg_xz%==%%i goto mg_%%i
echo 无效动作 & pause && goto start
:: --------------------------------------------------------------------------------------------------------------------
:mg_m
cls
title 模糊搜索
echo.
echo.
set name=
set lj=
set /p name= 请输入要查找的文件名:
if "%name%"=="" echo 请输入正确的文件名 &pause& goto mg_m
set /p lj= 请输入搜索路径:
if "%lj%"=="" echo 请输入正确的路径 &pause& goto mg_m
echo 请稍侯......
:: 此处获取当前日期时间变量做文件名是为了防止当用一个固定文件名时程序无故终止而这个固定文件名没有删除,可能导至下次查找错误
:: 还有个好处是恢复删除文件方便多了,再后面就会看出
:: 要是不判断比如说凌晨2点,则%dati%的值就像是 06-08-31 20000,中间多了个空格,后面就会出错,我12小时制
if %time:~0,2% lss 10 (set dati=%date:~2,8%0%time:~1,1%%time:~3,2%%time:~6,2%) else (set dati=%date:~2,8%%time:~0,2%%time:~3,2%%time:~6,2%)
:: 不搜索程序当前所在目录
echo %cd%>>%dati%_1.txt
dir /a /s /b "%lj%" |find "%name%">>%dati%_2.txt
for /f "tokens=* delims=" %%i in (%dati%_1.txt) do (find /i /v %dati%_2.txt "%%i">>%dati%_3.txt)
echo.>>%dati%.txt
for /f "skip=2 tokens=* delims=" %%a in (%dati%_3.txt) do (echo %%a>>%dati%.txt)
:: 如果%dati%.txt文件无内容goto no,有则goto ok
findstr . %dati%.txt>nul && (echo %dati%,搜索文件名,%name%,搜索成功>>fc_name.txt & goto ok)||goto no
:: echo 记录以前所有搜索到文件时的搜索文件名,后面利用文件名恢复时用
:: --------------------------------------------------------------------------------------------------------------------
:mg_g
del /q g_names_temp.txt g_names.txt g_names_guolv.txt g_names_guolv_jiance.txt
cls
title 高级搜索
echo ________________________________________________________________________________
echo.
echo 支持多文件名同时搜索(最多5个)
echo.
echo 输入多文件名时,中间用'半脚状态下的逗号'隔开,格式例如:a.txt,b.txt,c.txt,d.txt
echo ________________________________________________________________________________
set names=
set /p names= 请输入要查找的文件名:
if "%names%"=="" echo 请输入正确的文件名 &pause& goto mg_g
echo %names%>g_names_temp.txt
:: 要过滤的文件名
echo windows>>g_names_guolv.txt
echo system32>>g_names_guolv.txt
:: 此处可继续添加文件名过滤,前提是保证格式正确
cd.>g_names_guolv_jiance.txt
for /f "tokens=1 delims=," %%a in (g_names_guolv.txt) do (>>g_names_guolv_jiance.txt findstr /x /i "%%a"<g_names_temp.txt)
echo.
findstr . g_names_guolv_jiance.txt>nul && goto g_names_guolv_jiance_no||goto g_names_guolv_jiance_ok
:g_names_guolv_jiance_no
echo 你输入的%names%文件名含有被过滤的字符,按任意键重新输入别的文件名 &pause>nul& goto mg_g
:g_names_guolv_jiance_ok
for /f "tokens=1,2,3,4,5 delims=," %%i in (g_names_temp.txt) do (
if not "%%i"=="" echo %%i>>g_names.txt
if not "%%j"=="" echo %%j>>g_names.txt
if not "%%k"=="" echo %%k>>g_names.txt
if not "%%l"=="" echo %%l>>g_names.txt
if not "%%m"=="" echo %%m>>g_names.txt
)
del /q g_names_temp.txt g_names_guolv.txt g_names_guolv_jiance.txt
:mg_g_guolv
:: 获取日期+时间变量
set dati=
if %time:~0,2% lss 10 (set dati=%date:~2,8%0%time:~1,1%%time:~3,2%%time:~6,2%) else (set dati=%date:~2,8%%time:~0,2%%time:~3,2%%time:~6,2%)
cls
echo.
echo.
echo 搜索时排除的目录,目录下及子目录下的所有文件将不会被搜索
echo ________________________________________________________________________________
echo.
:mg_g_guolv_zj
set guolv_wjj_zj=
set /p guolv_wjj_zj= 不需要搜索本程序所在的当前文件夹[y/n]:
if "%guolv_wjj_zj%"=="" (echo 无效动作 & pause && goto mg_g_guolv)
if "%guolv_wjj_zj%"=="y" (echo %cd%>>%dati%_9.txt & goto mg_g_guolv_hsz)
if "%guolv_wjj_zj%"=="n" goto mg_g_guolv_hsz
echo 无效动作 & pause && goto mg_g_guolv
:mg_g_guolv_hsz
echo.
set guolv_wjj_hsz=
set /p guolv_wjj_hsz= 不需要搜索回收站[y/n]:
if "%guolv_wjj_hsz%"=="" (echo 无效动作 & pause && goto mg_g_guolv)
if "%guolv_wjj_hsz%"=="y" (
@call :dir_all & for /f "tokens=* delims= " %%i in (%dati%_7.txt) do (echo %%iRECYCLER>>%dati%_9.txt)
goto mg_g_guolv_mulu
)
if "%guolv_wjj_hsz%"=="n" goto mg_g_guolv_mulu
echo 无效动作 & pause && goto mg_g_guolv
:mg_g_guolv_mulu
echo.
set guolv_wjj_mulu=
set /p guolv_wjj_mulu= 是否还有不需要搜索的目录[y/n]:
if "%guolv_wjj_mulu%"=="" (echo 无效动作 & pause && goto mg_g_guolv)
if %guolv_wjj_mulu%==y goto mg_g_guolv_addmulu
if %guolv_wjj_mulu%==n goto mg_g_guolv_end
echo 无效动作 & pause && goto mg_g_guolv
: mg_g_guolv_addmulu
set guolv_wjj_mulus=
set /p guolv_wjj_mulus= 请输入目录的绝对路径(支持输入多路径,路径之间用'半脚状态下的逗号'隔开,留空表示没有不需要搜索的目录):
if "%guolv_wjj_mulus%"=="" goto mg_g_guolv_end
echo %guolv_wjj_mulus%>%dati%_9_temp.txt
for /f "tokens=1,2,3 delims=," %%i in (%dati%_9_temp.txt) do (
if not "%%i"=="" if exist %%i echo %%i>>%dati%_9.txt
if not "%%j"=="" if exist %%j echo %%j>>%dati%_9.txt
if not "%%k"=="" if exist %%k echo %%k>>%dati%_9.txt
)
:: del /q %dati%_9_temp.txt
:mg_g_guolv_end
echo ________________________________________________________________________________
echo 按任意键继续......
pause>nul
:mg_g_qr
cls
echo ________________________________________________________________________________
echo.
echo 你要查找的文件名是:%names%
echo.
echo 不搜索本程序所在的文件夹[y/n]:%guolv_wjj_zj%
echo.
echo 不搜索回收站[y/n]:%guolv_wjj_hsz%
echo.
echo 不搜索下列目录:%guolv_wjj_mulus%
echo.
echo 0 返回重新输 ^| y 继续下一步
echo ________________________________________________________________________________
set qr_xz=
set /p qr_xz= 请输入操作代码:
if "%qr_xz%"=="" (echo 无效动作 & pause && goto mg_g_qr)
if "%qr_xz%"=="y" goto mg_g_lj
if "%qr_xz%"=="0" del /q %dati%_9.txt & goto mg_g
echo 无效动作 & pause && goto mg_g_qr
:mg_g_lj
cls
echo ________________________________________________________________________________
echo.
echo 只支持单路径搜索,可以全盘搜索(只限xp sp2),全盘搜索输入all,包括光盘和U盘
echo ________________________________________________________________________________
echo.
set lj=
set /p lj= 请输入搜索路径:
if "%lj%"=="" echo 请输入正确的路径 &pause& goto mg_m_lj
if "%lj%"=="all" goto all_find
echo.
echo 请稍侯......
dir /a /s /b "%lj%">>%dati%_4.txt
dir /ad /s /b "%lj%">>%dati%_fcname_mulu_temp.txt
:fc_guolv_lj
:: dir搜索路径(生成%dati%_4.txt)后find 搜索name (生成%dati%_6_temp.txt) 再 call :find_nx 后生成%dati%_6.txt
for /f "tokens=1 delims=*" %%a in (g_names.txt) do (
>>%dati%_6_temp.txt find /i "%%a"<%dati%_4.txt && call :find_nx %%a
>>%dati%_fcname_mulu.txt find /i "%%a"<%dati%_fcname_mulu_temp.txt
)
没有粘贴完,到
http://www.cn-dos.net/forum/viewthread.php?tid=22906查看