找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 23119|回复: 8

[文件管理] 批处理全盘查找文件

[复制链接]
发表于 2008-3-15 11:05:39 | 显示全部楼层 |阅读模式
本人刚学批处理,写的不好,还请前辈们指教。用的都是基本命令,没什么花头。别见效啊。
  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
复制代码
发表于 2008-3-15 12:21:12 | 显示全部楼层
要是不只三个分区呢,是不是要加个分区自动获取呀?
 楼主| 发表于 2008-3-15 18:50:54 | 显示全部楼层
这个我还不会自动获取分区,麻烦版主指点一下
发表于 2008-3-15 19:22:30 | 显示全部楼层
呵呵...慢慢来.
试下这条命令:
  1. fsutil fsinfo drives
复制代码
 楼主| 发表于 2008-3-19 10:37:05 | 显示全部楼层
修改了 一下代码

  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
复制代码
 楼主| 发表于 2008-3-19 10:45:13 | 显示全部楼层
千万不要输入模糊的,如*.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

评分

参与人数 1PB +4 收起 理由
youxi01 + 4

查看全部评分

发表于 2009-4-15 16:01:02 | 显示全部楼层
@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

我感觉这样好像更简单点吧
发表于 2009-4-15 16:02:58 | 显示全部楼层

回复 7楼 的帖子

批处理bat代码是越短越好吗?
http://bbs.bathome.net/viewthread.php?tid=4026
发表于 2009-5-13 16:18:03 | 显示全部楼层
俺是新人。
问一下,要查找QQ.exe,如果装的是双系统,两个系统中都装有QQ,都有QQ.exe文件,如何能把两个QQ都显示出来啊?这段代码,只能显示第一个查找到的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-16 22:59 , Processed in 0.029819 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表