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

[其他] 批处理怎样全盘获取指定文件第一个路径?

  1. @echo off
  2. rem 指定待搜索的文件
  3. set "FileName=BatHome_Batcher.txt"
  4. echo 正在搜索,请稍候...
  5. for %%a in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do (
  6.   if exist %%a:\nul (
  7.     pushd %%a:\
  8.     for /r %%b in ("*%FileName%") do (
  9.       if /i "%%~nxb" equ "%FileName%" (
  10.         echo.%%b
  11.       )
  12.     )
  13.     popd
  14.   )
  15. )
  16. pause
复制代码
这段代码是论坛上的,它是全盘找出文件路径,有没有什么办法让它只得到第一个路径后退出,不在继续查找,比如在我的c盘和d盘各有一个qq.exe,只用这段代码找出c盘的qq.exe的路径,然后显示出来,退出,就不在查找D E F G H I J K L M N O P Q R S T U V W X Y Z了。

回复 26楼 的帖子

对不起!
发错地方了

TOP

不同的话题请分开发帖。
命令行参考:hh.exe ntcmds.chm::/ntcmds.htm
求助者请拿出诚心,别人才愿意奉献热心!
把查看手册形成条件反射!

TOP

对不起发错了,请斑竹删除

[ 本帖最后由 temp 于 2009-12-23 22:37 编辑 ]

TOP

对不起发错了,请斑竹删除

[ 本帖最后由 temp 于 2009-12-23 22:37 编辑 ]

TOP

回复 19楼 的帖子

非常感谢,你写的正是我想要的

同时感谢楼上诸位

TOP

回复 21楼 的帖子

嗯, 确实可直接 dir C:\iexplore.exe /ah /s /b
不过不重视 工作目录时, 用cd /d 简便一点, 免得 pushd 还要 popd 的

TOP

回复 19楼 的帖子

cd /d 会改变工作目录,不如pushd好使

回复 20楼 的帖子
可以直接
dir C:\iexplore.exe /ah /s /b
命令行参考:hh.exe ntcmds.chm::/ntcmds.htm
求助者请拿出诚心,别人才愿意奉献热心!
把查看手册形成条件反射!

TOP

回复 17楼 的帖子

ZQZ 说得很正确,
15 楼代码应改为
(cd /d c:\)& dir IEXPLORE.EXE /ah /s /b
来使用

TOP

根据 temp 的意图, 请使用下面的代码, 并保证 Illegal.txt 和 这个bat在同一个目录
  1. @echo off & setlocal enabledelayedexpansion
  2. for /f "delims=" %%h in (Illegal.txt) do (
  3.   for %%a in (C D E F) do (
  4.     cd /d %%a:\
  5.     for /r %%b in (%%h) do (
  6.       if exist "%%~fb" (echo "%%~fb")
  7.     )
  8.   )
  9. )
  10. pause
复制代码
我的运行结果如下:
"C:\WINDOWS\system32\dllcache\iexplore.exe"
"C:\Program Files\internet explorer\IEXPLORE.EXE"
"E:\TEMP\PFiles\Internet Explorer\IEXPLORE.EXE"
"F:\SOFT_INS\PFiles\Internet Explorer\IEXPLORE.EXE"
"C:\WINDOWS\regedit.exe"
"C:\WINDOWS\system32\dllcache\regedit.exe"
"F:\GRTMPVOL_CN (I)\I386\REGEDIT.EXE"
"F:\WINXPSH\I386\REGEDIT.EXE"
"F:\XPSP3INS\I386\REGEDIT.EXE"
请按任意键继续. . .
可以再改一下,即使隐藏的文件也会显示出来
  1. @echo off
  2. for /f "delims=" %%h in (Illegal.txt) do (
  3.   for %%a in (C D E F) do (
  4.     dir "%%a:\%%h" /ah /s /b 2>nul
  5.     dir "%%a:\%%h" /s /b 2>nul
  6.   )
  7. )
  8. pause
复制代码

[ 本帖最后由 neorobin 于 2009-12-23 01:22 编辑 ]

TOP

回复 16楼 的帖子

dir c:\ "IEXPLORE.EXE" 相当于
dir c:\ & dir "IEXPLORE.EXE"

dir等命令可以接受多个参数。
命令行参考:hh.exe ntcmds.chm::/ntcmds.htm
求助者请拿出诚心,别人才愿意奉献热心!
把查看手册形成条件反射!

TOP

neorobin也犯了这个说了很多次的经典错误
驱动器: 表示指定驱动器中的当前目录
驱动器:\ 表示指定驱动器中的根目录
  1. @echo off
  2. dir %~d0
  3. pause
  4. cd\
  5. dir %~d0
  6. pause
复制代码
命令行参考:hh.exe ntcmds.chm::/ntcmds.htm
求助者请拿出诚心,别人才愿意奉献热心!
把查看手册形成条件反射!

TOP

原帖由 neorobin 于 2009-12-22 20:51 发表
抱歉, 我对 WIN2003 不了解, 我用的 WINXP,
请问 dir c:IEXPLORE.EXE /s /b 可有显示结果
用你 12 楼的代码, 我的测试结果:
"C:\WINDOWS\system32\dllcache\iexplore.exe"
请按任意键继续. . .

建议你先打开 ...


这样有显示
  1. @echo off
  2. dir c:\ "IEXPLORE.EXE"
  3. pause
复制代码

结果如下
  1. 驱动器 C 中的卷没有标签。
  2. 卷的序列号是 EC2D-70F6
  3. c:\ 的目录
  4. 2003-03-12  00:49                 0 AUTOEXEC.BAT
  5. 2003-03-12  00:49                 0 CONFIG.SYS
  6. 2009-10-08  19:59               646 Documents
  7. 2003-03-12  01:02    <DIR>          Documents and Settings
  8. 2009-10-04  09:07    <DIR>          Program Files
  9. 2009-11-09  18:49    <DIR>          WINDOWS
  10. 2003-03-12  00:49    <DIR>          wmpub
  11.                3 个文件            646 字节
  12. C:\Documents and Settings\Administrator\桌面 的目录
  13. 找不到文件
  14. 请按任意键继续. . .
复制代码

TOP

  1. dir c:\IEXPLORE.EXE /ah /s /b
复制代码
根据 17 楼 zqz0012005 指出的错误已作出更改
用上面的代码可显示 c: 盘 设置了隐藏属性 的 IEXPLORE.EXE
如果仍没结果, 表明 C: 盘没有 IEXPLORE.EXE 文件, 或者 WIN2003 有特别的不同, 让这个命令找不到文件
建议你用系统搜索功能全盘查找 IEXPLORE.EXE 文件, 看看这个文件究竟在哪, 以及是否有隐藏属性
搜索选项上, 搜索系统文件夹, 搜索隐藏文件和目录, 搜索子文件夹都打上勾

[ 本帖最后由 neorobin 于 2009-12-23 01:19 编辑 ]

TOP

回复 13楼 的帖子

提示找不到文件,BAT原文件如下:
  1. @echo off
  2. dir c:IEXPLORE.EXE /s /b
  3. pause
复制代码
我最关心的如下,Illegal.txt包含两个已知的进程名,怎样修改都不显示
Illegal.txt:
IEXPLORE.EXE
regedit.exe
  1. @echo off
  2. for /f %%h in (Illegal.txt) do (echo %%h)
  3. set "FileName=%%h"
  4. echo 正在搜索,请稍候...
  5. for %%a in (C D E F) do (
  6.   if exist %%a:\nul (
  7.     pushd %%a:\
  8.     for /r %%b in ("*%FileName%") do (
  9.       if /i "%%~nxb" equ "%FileName%" (
  10.         echo.%%b
  11.         goto end
  12.       )
  13.     )
  14.     popd
  15.   )
  16. )
  17. :end
  18. pause
复制代码

TOP

返回列表