Board logo

标题: [文件管理] 批处理全盘查找文件 [打印本页]

作者: fml520    时间: 2008-3-15 11:05     标题: 批处理全盘查找文件

本人刚学批处理,写的不好,还请前辈们指教。用的都是基本命令,没什么花头。别见效啊。
  1. @echo off
  2. title 全盘查找文件 by fmr520
  3. color 89
  4. :cd
  5. cls
  6. echo.
  7. echo.
  8. set /p "p=按回车"
  9. cls
  10. echo.
  11. echo.
  12. echo 请输入要找的文件名和后缀如;abc.txt
  13. echo.
  14. echo.
  15. set /p p=请输入:
  16. del dir.txt /a/s/q>nul
  17. for /f "delims=" %%i in ('dir/a/b/s c:\;d:\;e:\ ^|findstr /c:"%p%" ') do (set
  18. sum+=1
  19. if "%%a" gtr 1 goto dir
  20. cls
  21. if "%%~nxi" equ %p% cd/d"%%~dpi"
  22. call "%%~nxi"&&goto cd
  23. :dir
  24. echo "%%i">>dir.txt
  25. )
  26. echo.
  27. echo.
  28. echo 文件名重复,无法一次打开多个文件,请查看dir.txt文件
  29. echo.&echo.
  30. pause
  31. goto cd
复制代码

作者: foxJL    时间: 2008-3-15 12:21

要是不只三个分区呢,是不是要加个分区自动获取呀?
作者: fml520    时间: 2008-3-15 18:50

这个我还不会自动获取分区,麻烦版主指点一下
作者: foxJL    时间: 2008-3-15 19:22

呵呵...慢慢来.
试下这条命令:
  1. fsutil fsinfo drives
复制代码

作者: fml520    时间: 2008-3-19 10:37

修改了 一下代码
  1. @echo off
  2. title 全盘查找文件 by fmr520
  3. color 89
  4. setlocal enabledelayedexpansion
  5. echo.
  6. echo.
  7. echo 请输入要找的文件名和后缀如;abc.txt
  8. echo.
  9. echo.
  10. set /p p=请输入:
  11. for /f "delims=\" %%i in ('fsutil fsinfo drives^|find /v ""') do (
  12.     set var=%%i
  13.     set drive=!var:~-2!
  14.     fsutil fsinfo drivetype !drive!|find "固定">nul && (
  15.         for /f "tokens=*" %%j in ('dir /a-d /b /s !drive!\%p% 2^>nul') do (set sum+=1
  16. if "%%j" gtr 1 goto dir
  17. cls
  18. if "%%~nxj" equ %p% cd/d"%%~dpj"
  19. call "%%~nxj"&&goto cd
  20. :dir
  21. echo "%%j">>dir.txt
  22. )
  23.     )   
  24. )
  25. exit
复制代码

作者: fml520    时间: 2008-3-19 10:45

千万不要输入模糊的,如*.jpg *.exe
这样的话会把找到的所有文件都全部打开。
如要模糊查找,我在给个模糊查找的代码
@echo off
title 全盘查找文件 by fmr520
color 89
setlocal enabledelayedexpansion
echo.
echo.
echo 请输入要找的后缀如;*.txt
echo.
echo.
set /p p=请输入:
for /f "delims=\" %%i in ('fsutil fsinfo drives^|find /v ""') do (
    set var=%%i
    set drive=!var:~-2!
    fsutil fsinfo drivetype !drive!|find "固定">nul && (
        for /f "tokens=*" %%j in ('dir /a-d /b /s !drive!\%p% 2^>nul') do echo "%%j">>dir.txt

    )   
)
start dir.txt
exit
作者: woxingwoshu007    时间: 2009-4-15 16:01

@echo off
set /p chenlun=输入要搜索的文件名:
echo 正在搜索中请稍等......
for %%a in (c d e f h) do for /f "tokens=*" %%b in ('dir /s/b/a-d %%a:\%chenlun%') do (echo %%b & start "" "%%b")
pause

我感觉这样好像更简单点吧
作者: Batcher    时间: 2009-4-15 16:02     标题: 回复 7楼 的帖子

批处理bat代码是越短越好吗?
http://bbs.bathome.net/viewthread.php?tid=4026
作者: csqsw    时间: 2009-5-13 16:18

俺是新人。
问一下,要查找QQ.exe,如果装的是双系统,两个系统中都装有QQ,都有QQ.exe文件,如何能把两个QQ都显示出来啊?这段代码,只能显示第一个查找到的。




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2