[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] [分享]超级文件文档搜索批处理

出于个人需要写的,可搜索指定路径下的所有文件,默认是批处理所在目录下查找,可搜索指定文件和文字。比系统自带搜索更快,可搜索系统和隐藏文件。不过文字注释上可能有些坛友看不懂,不好意思了,看代码吧,可能有些朋友会用到,就贴上来。
  1. @echo off
  2. mode con lines=17 cols=60
  3. color 1f
  4. title 文件索引       chenlian  --20081218
  5. rem 本程序的特点是可以快速的查找你想找的文件、文件夹、和文字,并可快速打开搜索的结果。
  6. rem 例如查找"i love you"的文件或文件夹,或者在指定文件类型里查找含有"i love you"文字的文件,并迅速打开。
  7. rem 可以单个或全部删除搜索到的文件。
  8. rem 2007-08-30 @XP CMD
  9. :0
  10. cls
  11. echo.
  12. echo   本机所有磁盘列表:
  13. echo -----------------------
  14. echo 盘符  磁盘类型
  15. echo.
  16. setlocal enabledelayedexpansion
  17. for /f "skip=1 tokens=1,2 delims=\" %%a in ('fsutil fsinfo drives^|find /v ""') do (
  18.     set aa=%%a
  19.     set aa=!aa:~-2!
  20.     for %%i in (!aa!) do fsutil fsinfo drivetype %%i
  21. )
  22. endlocal
  23. echo ------------------------
  24. set cpan=%~dp0
  25. set cpan=%cpan:~0,-1%
  26. echo  [ 默认查找路径: %cpan%\ ]&echo.
  27. echo  在哪里查找?[请输入一个盘符或拖入待查找的文件夹]
  28. set/p cpan= :
  29. if "%cpan:~3,1%"=="\" set cpan=%cpan:~1,-1%
  30. if not exist %cpan:~0,1%: echo 路径不存在!  任意键返回...&pause>nul&goto 0
  31. set ziliao=:
  32. echo  (查找内容前加[\]忽略子目录,加[/]在指定文件中找文字.)
  33. echo  (查找文档时可用通配符号或[?]进行模糊查找.       )
  34. echo  请输入要查找的文档名[如:*.doc; temp.txt]
  35. set/p ziliao= 或者输入想在某类文档中查找的文字[如:/工作安排; /第十七章] :
  36. cls
  37. echo.&echo.&echo  执行中!
  38. echo  在路径[ %cpan% ]中搜索[ %ziliao% ].
  39. echo.&echo  正在查找,请稍候 ...
  40. set "ziliao=%ziliao:"=%"
  41. if "%ziliao%"==":" goto 0
  42. if exist 查找结果.txt del/f/q 查找结果.txt
  43. if exist 查找结果.czjg del/f/q 查找结果.czjg
  44. set dirrs=dir/a/s/b/d
  45. set zimulu=查找
  46. set ads=/s
  47. if not "%cpan:~2,1%"=="\" set cpan=%cpan:~0,1%:
  48. 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))
  49. if "%ziliao:~1,1%"=="\" set dirrs=dir/a/b/d&set zimulu=忽略&set ads=
  50. 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%)
  51. :cazao
  52. if "%leixin%"=="" (set neixin=全部) else (set neixin=.%leixin%)
  53. >查找结果.txt echo 查找时间: [ %date:~0,10% %time:~0,5% ]
  54. >>查找结果.txt echo.
  55. >>查找结果.txt echo 查找目录: [ %cpan%\ ]
  56. >>查找结果.txt echo.
  57. >>查找结果.txt echo 子 目 录: [ %zimulu% ]
  58. >>查找结果.txt echo.
  59. >>查找结果.txt echo 文件类型: [ %neixin% ]
  60. >>查找结果.txt echo.
  61. >>查找结果.txt echo 查找内容: [ %ziliao% ]
  62. >>查找结果.txt echo.
  63. >>查找结果.txt echo 查找结果:        %dxx%
  64. >>查找结果.txt echo ──────────────────────
  65. %gotoend%
  66. :1
  67. %dirrs% "%cpan%\*%ziliao%*"|findstr /n .>>查找结果.txt
  68. >>查找结果.txt echo ──────────end────────────
  69. if %ERRORLEVEL%==1 cls&echo.&echo  搜索类型: [ 文件或文件夹 ]&echo.&echo  搜索目录: [ %cpan%\ ]&echo.&echo  子 目 录: [ %zimulu% ]&echo.&echo  结    果: 没有找到与"%ziliao%"有关的文件或文件夹!&echo.&echo  按任意键返回... &pause>nul&goto 0
  70. start "%SystemRoot%\system32\notepad.exe" 查找结果.txt
  71. cls
  72. for /f "tokens=1 delims=:" %%i in ('findstr /n /c:"──────────end────────────" 查找结果.txt') do (set /a hhao=%%i-13)
  73. echo.&echo  查找路径: [ %cpan%\ ]
  74. echo.&echo  查找内容: [ %ziliao% ]
  75. echo.&echo  找到结果: [ %hhao%个 ]
  76. echo.&echo  请在弹出的窗口在查看详细内容.
  77. echo.&echo  如需打开相应文件,请输入查找结果前对应的数字并回车.
  78. echo.&echo  数字前加[d]删除对应的文件;[0]删除所有搜索到的文件.
  79. echo.&echo  数字前加[.]用记事本打开对应的文件.&echo.
  80. :czwj
  81. set/p dakai= ^>^>:
  82. set sta=start ""
  83. set paus=
  84. 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)
  85. %paus%
  86. if "%dakai:~0,1%"=="." set dakai=%dakai:~1,5%&set sta=notepad.exe
  87. if /i "%dakai%"=="d" goto 0
  88. if /i "%dakai:~0,1%"=="d" set dakai=%dakai:~1,5%&set sta=del/q/f/a
  89. set/a jisuan=10000-%dakai%
  90. if "%jisuan%"=="10000" goto 0
  91. for /f "tokens=3 delims=:" %%i in ('findstr /b "%dakai%:" 查找结果.txt') do (%sta% "%cpan:~0,1%:%%i")
  92. goto czwj
  93. :2
  94. cls
  95. echo.&echo  扩展名前加[.]关键词被视为整体;后加[/x]区分大小写.&echo.
  96. echo  文件扩展名默认为TXT格式.&echo.
  97. set adi=/i&set dxx=(搜索不分大小写)
  98. set sdc=
  99. set leixin=txt
  100. set/p leixin= 请输入文件扩展名(如"htm",保持默认请直接回车) :  
  101. echo.&echo  正在搜索字符串,请稍候 ...
  102. if /i "%leixin%"=="/x" set leixin=:&set dxx=(搜索区分大小写)&set adi=
  103. if /i "%leixin:~-2,2%"=="/x" set leixin=%leixin:~0,-2%&set dxx=(搜索区分大小写)&set adi=
  104. 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=)
  105. set gotoend=goto :eof
  106. call :cazao
  107. ren 查找结果.txt 查找结果.czjg
  108. findstr %ads% %adi% %sdc%"%ziliao%" "%cpan%\*.%leixin%"|findstr /n .>>查找结果.czjg 2>nul
  109. >>查找结果.czjg echo ──────────end────────────
  110. if %ERRORLEVEL%==1 cls&echo.&echo  搜索类型: [ 文档字符串 ]&echo.&echo  搜索目录: [ %cpan%\ ]&echo.&echo  子 目 录: [ %zimulu% ]&echo.&echo  文件类型: [ .%leixin% ]&echo.&echo  结    果: 没有找到存在"%ziliao%"的文档! 请检查大小写再试试.&echo.&echo  按任意键返回... &pause>nul&goto 0
  111. ren 查找结果.czjg 查找结果.txt
  112. start "%SystemRoot%\system32\notepad.exe" 查找结果.txt
  113. cls
  114. for /f "tokens=1 delims=:" %%i in ('findstr /n /c:"──────────end────────────" 查找结果.txt') do (set /a hhao=%%i-13)
  115. echo.&echo  查找路径: [ %cpan%\ ]
  116. echo.&echo  字符内容: [ %ziliao% ]
  117. echo.&echo  找到结果: [ %hhao%条 ]
  118. echo.&echo  请在弹出的窗口在查看详细内容.
  119. echo.&echo  如需查看文件请输入查找结果前对应的数字并回车.
  120. echo.&echo  数字前加[.]用记事本打开;[d]删除文件;[0]删除所有!&echo.
  121. :dk
  122. set/p dakai= ^>^>:
  123. set sta=start ""
  124. set paus=
  125. 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)
  126. %paus%
  127. if "%dakai:~0,1%"=="." set dakai=%dakai:~1,5%&set sta=notepad.exe
  128. if /i "%dakai%"=="d" goto 0
  129. if /i "%dakai:~0,1%"=="d" set dakai=%dakai:~1,5%&set sta=del/q/f/a
  130. set/a jisuan=10000-%dakai%
  131. if "%jisuan%"=="10000" goto 0
  132. for /f "tokens=3 delims=:" %%i in ('findstr /b "%dakai%:" 查找结果.txt') do %sta% "%cpan:~0,1%:%%i"
  133. goto dk
复制代码

[ 本帖最后由 clamber 于 2011-1-10 18:03 编辑 ]

原创的吗?不错哈,感谢分享~~~
测试环境:WINDOWS 8 64Bit
如系统环境不同,请自行修改 :)

TOP

谢谢啊,楼主~~
里面很多东西都不懂,但很实用

TOP

收藏了  学习 ~~~
花开不问月,不语笑红尘.

TOP

拖入文件夹,且能搜索子文件夹并输入查询结果,挺实用

TOP

返回列表