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

[其他] 批处理如何查找指定文件并将当前目录环境切换到该文件所在的目录下

[复制链接]
发表于 2008-8-18 20:35:33 | 显示全部楼层 |阅读模式
本帖最后由 pcl_test 于 2016-11-17 12:52 编辑

求助:实现搜索功能
我想实现的是搜索某文件后在进入其所在目录。
例如:我想搜索的是qq.exe文件,搜索后知道在“聊天”目录里,就进入该目录!!!

----我认为重要的是如何让bat文件知道qq是在“聊天”的目录里!!!

请帮助解答!!!
发表于 2008-8-18 22:44:55 | 显示全部楼层
  1. @echo off
  2. for /f "delims=" %%a in ('dir/b/s qq.exe') do set "QQpath=%%~dpa"
  3. echo.%QQpath%
  4. pause
复制代码
  1. @echo off
  2. for /f "tokens=2*" %%a in ('reg query hklm\software\tencent\qq^|findstr/i "Install"') do set QQpath=%%b
  3. echo.%QQpath%
  4. pause
复制代码

评分

参与人数 1PB +10 收起 理由
浅默 + 10 精品文章

查看全部评分

 楼主| 发表于 2008-8-20 18:33:14 | 显示全部楼层
楼上。
我测试了第一个筐筐的代码。得到:“找不到文件”是为什么?
还有第一段代码也是找路径么???


测试第二个代码只得到了qq安装的路径,我想要的 是
1:得到路径。-----你做到了,
2:进入该路径----你没写???
发表于 2008-8-20 21:20:53 | 显示全部楼层
  1. for %%b in (c d e f g h i) do (pushd %%b: & for %%i in ('dir /s /a: "qq.exe") do (echo %~fi&&explorer %~fi&pause))
复制代码
不知道能不能用
没试过
错误的话 你试着改改百分号
发表于 2008-8-20 21:22:32 | 显示全部楼层
'reg query hklm\software\tencent\qq^|findstr/i "Install"'
这一句写得很好~~~~很厉害呀   值得学习
发表于 2008-8-20 21:35:07 | 显示全部楼层

回复 3楼 的帖子

第一段代码只是从当前目录搜索QQ.EXE 包括子目录。
用第二段代码吧,通用高效。
进入。。。
cd /d %QQpath%
发表于 2008-8-23 04:38:54 | 显示全部楼层
呵呵 真佩服版主们能耐心....
换了我...
 楼主| 发表于 2008-8-23 04:46:39 | 显示全部楼层
谢谢了
成功!!!
发表于 2008-8-23 16:27:16 | 显示全部楼层

  1. FOR  %%a in ( c: d: e: f: g: h: i: j: k: l: m: n: o: p: q: r: s: t: u: v: w: s: y: z: ) do dir /s/b %%a\qq.exe>>list.txt
  2. FOR /f "delims=" %%b in ( 'type list.txt' ) do  "%%b"
复制代码
发表于 2008-8-26 19:40:52 | 显示全部楼层
原帖由 pusofalse 于 2008-8-18 22:44 发表
@echo off
for /f "delims=" %%a in ('dir/b/s qq.exe') do set "QQpath=%%~dpa"
echo.%QQpath%
pause@echo off
for /f "tokens=2*" %%a in ('reg query hklm\software\tencent\qq^|findstr/i "Install"') do se ...

经测试,1、有空格路径时路径显示不完整。2、多个版本多个地方安装qq程序时无法满足需求 3、无法进入有空格的路径
发表于 2008-8-26 19:43:33 | 显示全部楼层
原帖由 千浪 于 2008-8-23 16:27 发表

FOR  %%a in ( c: d: e: f: g: h: i: j: k: l: m: n: o: p: q: r: s: t: u: v: w: s: y: z: ) do dir /s/b %%a\qq.exe>>list.txt
FOR /f "delims=" %%b in ( 'type list.txt' ) do  "%%b"


经测试:
1、能找到电脑上所有安装的qq程序路径,并逐一显示
2、但不能进入相应目录,而是打开了相应目录的qq程序,和楼主需求不一
发表于 2008-8-26 21:12:54 | 显示全部楼层
for /f "skip=1 tokens=1*" %i in ('wmic datafile where "filename='qq' and extension='exe'" get drive^,path') do (explorer %i%j)
 楼主| 发表于 2008-8-28 00:00:53 | 显示全部楼层

2楼看

我顶@!!
斑竹问题出来了!!!!
@echo off
for /f "tokens=2*" %%a in ('reg query hklm\software\tencent\qq^|findstr/i "Install"') do set QQpath=%%b
echo.%QQpath%
pause
这段代码在本网吧测试的时候显示:"找不到相应的注册表键值"
发表于 2008-8-28 09:50:44 | 显示全部楼层
  1. for /f "skip=4 tokens=2,*" %%i in ('REG QUERY "HKEY_LOCAL_MACHINE\SOFTWARE\TENCENT\QQ" /v "Install"') do (
  2.     set QQ=%%j.\QQ.exe
  3. ) >nul 2>nul
  4. cls
  5. if not '%QQ%'=='' goto fndqq

  6. echo 注册表中没有QQ的安装信息,正在全盘搜索……
  7. 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 (
  8.     pushd %%a:\
  9.     for /r %%b in (.) do (
  10.         if exist %%b\QQ.exe set QQ=%%b\QQ.exe
  11.     )
  12. ) >nul 2>nul
  13. popd
  14. set regadd=%QQ:~0,-8%
  15. REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\TENCENT\QQ" /v "Install" /t REG_SZ /d %regadd% >nul 2>nul
  16. cls
  17. :fndqq

  18. echo %QQ%
  19. pause
复制代码
先从注册表中查找QQ路径,如果找不到,说明QQ是绿色安装的,那么全盘搜索QQ
发表于 2008-8-28 14:18:29 | 显示全部楼层
原帖由 jellyhk 于 2008-8-28 00:00 发表
我顶@!!
斑竹问题出来了!!!!
@echo off
for /f "tokens=2*" %%a in ('reg query hklm\software\tencent\qq^|findstr/i "Install"') do set QQpath=%%b
echo.%QQpath%
pause
这段代码在本网吧测试的时候显示:"找 ...

很明显是你的注册表问题了,^_^因为是网吧的电脑,在我电脑上测试正常。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-17 06:49 , Processed in 0.022081 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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