clian76
中级用户
积分 363
发帖 162
注册 2007-4-22
状态 离线
|
『楼 主』:
指定路径下搜索文件和文字,包括隐含文件
不是专业的,排版有点差,呵呵, 在指定路径下搜索文件和文件夹,包括隐含和系统文件,或在指定文件类型里面搜索文字。感觉这样搜索比用系统自带的搜索要快五至十倍。可以单个或全部删除搜索到的文件。
---------------------------------------------------------------------------------------------------------
@echo off
mode con lines=17 cols=60
color 1f
title 文件索引 chenlian --20070818
rem 本程序的特点是可以快速的查找你相找的文件、文件夹、文件内容,并可快速打开搜索的结果。
rem 例如你可查找"i love you"的文件或文件夹,也可在指定文件类型里面找存在"i love you"字符的文件,并迅速打开。
ren 可以单个或全部删除搜索到的文件。
rem 2007-08-30 @XP CMD
:0
if exist 查找结果.txt del /q 查找结果.txt
if exist 查找结果.czjg del /q 查找结果.czjg
cls
echo.
echo 本机所有磁盘列表:
echo -----------------------
echo 盘符 磁盘类型
echo.
setlocal enabledelayedexpansion
for /f "skip=1 tokens=1,2 delims=\" %%a in ('fsutil fsinfo drives^|find /v ""') do (
set aa=%%a
set aa=!aa:~-2!
for %%i in (!aa!) do fsutil fsinfo drivetype %%i
)
echo ------------------------
set/p cpan= 输入查找路径或盘符 :
if "%cpan:~3,1%"=="\" set cpan=%cpan:~1,-1%
if not exist %cpan:~0,1%: echo 输入的路径不存在^^^! 请重新输入...&pause>nul&goto 0
set ziliao=:
echo (查找内容前加"\"忽略子目录,"/"在指定文件中找字符串.)
echo (查找文档可用通配符"*"号或"?"号扩大搜索范围. )
set/p ziliao= 请输入要查找的内容 :
cls
echo.&echo.&echo 执行中^^^!
echo 在路径[ %cpan% ]中搜索[ %ziliao% ].
echo.&echo 正在查找,请稍候 ...
set "ziliao=%ziliao:"=%"
if "%ziliao%"==":" goto 0
set dirrs=dir/a/s/b/d
set zimulu=查找
set ads=/s
if not "%cpan:~2,1%"=="\" set cpan=%cpan:~0,1%:
if "%ziliao:~0,1%"=="\" (if "%ziliao:~1,1%"=="/" (set ziliao=%ziliao:~2,100%&set zimulu=忽略&set ads=&goto 2) else (set ziliao=%ziliao:~1,100%&set dirrs=dir/a/b/d&set zimulu=忽略&goto cazao))
if "%ziliao:~1,1%"=="\" set dirrs=dir/a/b/d&set zimulu=忽略&set ads=
if "%ziliao:~0,1%"=="/" (if "%ziliao:~1,1%"=="\" (set ziliao=%ziliao:~2,100%&set ads=&goto 2) else (set ziliao=%ziliao:~1,100%&goto 2)) else (if "%ziliao:~0,1%"=="\" set ziliao=%ziliao:~1,100%)
:cazao
>查找结果.txt echo 查找时间: [ %date:~0,10% %time:~0,5% ]
>>查找结果.txt echo.
>>查找结果.txt echo 查找路径: [ %cpan%\ ]
>>查找结果.txt echo.
>>查找结果.txt echo 查找内容: [ %ziliao% ]
>>查找结果.txt echo.
>>查找结果.txt echo 子 目 录: [ %zimulu% ]
>>查找结果.txt echo.
>>查找结果.txt echo 文件类型: [ .%leixin% ]
>>查找结果.txt echo.
>>查找结果.txt echo 查找结果: %dxx%
>>查找结果.txt echo ──────────────────────
%gotoend%
:1
%dirrs% "%cpan%\*%ziliao%*"|findstr /n .>>查找结果.txt
>>查找结果.txt echo ──────────end────────────
if %ERRORLEVEL%==1 cls&echo.&echo 搜索类型: [ 文件或文件夹 ]&echo.&echo 搜索目标: [ %cpan%\ ]&echo.&echo 子 目 录: [ %zimulu% ]&echo.&&echo 结 果: 没有找到与"%ziliao%"有关的文件或文件夹^^^!&echo.&echo 按任意键返回... &pause>nul&goto 0
start 查找结果.txt
cls
for /f "tokens=1 delims=:" %%i in ('findstr /n /c:"──────────end────────────" 查找结果.txt') do (set /a hhao=%%i-13)
echo.&echo 查找路径: [ %cpan%\ ]
echo.&echo 查找内容: [ %ziliao% ]
echo.&echo 找到结果: [ %hhao%个 ]
echo.&echo 请在弹出的窗口在查看详细内容.
echo.&echo 如需打开相应文件请输入查找结果前对应的数字并回车.
echo.&echo 数字前加"d"删除对应的文件,"0"删除所有搜索到的文件&echo.
:czwj
set/p dakai= ^>^>:
set sta=start ""
set paus=
if "%dakai%"=="0" cls&echo 下列文件删除失败:&set paus=pause&for /f "tokens=3 delims=:" %%i in ('findstr /b . 查找结果.txt') do (if exist "%cpan:~0,1%:%%i" del/q/f/a "%cpan:~0,1%:%%i" 2>nul)
%paus%
if /i "%dakai%"=="d" goto 0
if /i "%dakai:~0,1%"=="d" set dakai=%dakai:~1,5%&set sta=del/q/f/a
set/a jisuan=10000-%dakai%
if "%jisuan%"=="10000" goto 0
for /f "tokens=3 delims=:" %%i in ('findstr /b "%dakai%:" 查找结果.txt') do (%sta% "%cpan:~0,1%:%%i")
goto czwj
:2
cls
echo.&echo 扩展名前加"."关键词被视为整体,后加"/x"区分大小写.&echo.
echo 文件扩展名默认为TXT格式.&echo.
set adi=/i&set dxx=(搜索不分大小写)
set sdc=
set leixin=:
set/p leixin= 请输入文件扩展名(如"htm",保持默认请直接回车) :
echo.&echo 正在搜索字符串,请稍候 ...
if /i "%leixin%"=="/x" set leixin=:&set dxx=(搜索区分大小写)&set adi=
if /i "%leixin:~-2,2%"=="/x" set leixin=%leixin:~0,-2%&set dxx=(搜索区分大小写)&set adi=
if "%leixin:~0,1%"=="." (if "%leixin:~-1%"=="." (set leixin=txt&set sdc=/c:) else (set leixin=%leixin:~1,100%&set sdc=/c:)) else (set sdc=)
if "%leixin%"==":" set leixin=txt
set gotoend=goto :eof
call :cazao
ren 查找结果.txt 查找结果.czjg
findstr %ads% %adi% %sdc%"%ziliao%" "%cpan%\*.%leixin%"|findstr /n .>>查找结果.czjg 2>nul
>>查找结果.czjg echo ──────────end────────────
if %ERRORLEVEL%==1 cls&echo.&echo 搜索类型: [ 文档字符串 ]&echo.&echo 搜索目标: [ %cpan%\ ]&echo.&echo 子 目 录: [ %zimulu% ]&echo.&&echo 结 果: 没有找到存在"%ziliao%"的文档^^^! 请检查大小写再试试.&echo.&echo 按任意键返回... &pause>nul&goto 0
ren 查找结果.czjg 查找结果.txt
start 查找结果.txt
cls
for /f "tokens=1 delims=:" %%i in ('findstr /n /c:"──────────end────────────" 查找结果.txt') do (set /a hhao=%%i-13)
echo.&echo 查找路径: [ %cpan%\ ]
echo.&echo 字符内容: [ %ziliao% ]
echo.&echo 找到结果: [ %hhao%条 ]
echo.&echo 请在弹出的窗口在查看详细内容.
echo.&echo 如需查看文件请输入查找结果前对应的数字并回车.
echo.&echo 数字前加["."默认打开方式,"d"删除文件],"0"删除所有^^^!&echo.
:dk
set/p dakai= ^>^>:
set sta=notepad.exe
set paus=
if "%dakai%"=="0" cls&echo 下列文件删除失败:&set paus=pause&for /f "tokens=3 delims=:" %%i in ('findstr /b . 查找结果.txt') do (if exist "%cpan:~0,1%:%%i" del/q/f/a "%cpan:~0,1%:%%i" 2>nul)
%paus%
if "%dakai:~0,1%"=="." set dakai=%dakai:~1,5%&set sta=start ""
if /i "%dakai%"=="d" goto 0
if /i "%dakai:~0,1%"=="d" set dakai=%dakai:~1,5%&set sta=del/q/f/a
set/a jisuan=10000-%dakai%
if "%jisuan%"=="10000" goto 0
for /f "tokens=3 delims=:" %%i in ('findstr /b "%dakai%:" 查找结果.txt') do %sta% "%cpan:~0,1%:%%i"
goto dk
----------------------------------------------------------------------------------------------------------
[ Last edited by clian76 on 2007-8-30 at 08:43 PM ]
|
|