标题: [其他] 批处理如何查找指定文件并将当前目录环境切换到该文件所在的目录下 [打印本页]
作者: jellyhk 时间: 2008-8-18 20:35 标题: 批处理如何查找指定文件并将当前目录环境切换到该文件所在的目录下
本帖最后由 pcl_test 于 2016-11-17 12:52 编辑
求助:实现搜索功能
我想实现的是搜索某文件后在进入其所在目录。
例如:我想搜索的是qq.exe文件,搜索后知道在“聊天”目录里,就进入该目录!!!
----我认为重要的是如何让bat文件知道qq是在“聊天”的目录里!!!
请帮助解答!!!
作者: 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 set QQpath=%%b
- echo.%QQpath%
- pause
复制代码
作者: jellyhk 时间: 2008-8-20 18:33
楼上。
我测试了第一个筐筐的代码。得到:“找不到文件”是为什么?
还有第一段代码也是找路径么???
测试第二个代码只得到了qq安装的路径,我想要的 是
1:得到路径。-----你做到了,
2:进入该路径----你没写???
作者: 基拉freedom 时间: 2008-8-20 21:20
- 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))
复制代码
不知道能不能用
没试过
错误的话 你试着改改百分号
作者: 基拉freedom 时间: 2008-8-20 21:22
'reg query hklm\software\tencent\qq^|findstr/i "Install"'
这一句写得很好~~~~很厉害呀 值得学习
作者: pusofalse 时间: 2008-8-20 21:35 标题: 回复 3楼 的帖子
第一段代码只是从当前目录搜索QQ.EXE 包括子目录。
用第二段代码吧,通用高效。
进入。。。
cd /d %QQpath%
作者: gfwlxx 时间: 2008-8-23 04:38
呵呵 真佩服版主们能耐心....
换了我...
作者: jellyhk 时间: 2008-8-23 04:46
谢谢了
成功!!!
作者: 千浪 时间: 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"
复制代码
作者: 愚无尽 时间: 2008-8-26 19:40
原帖由 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
原帖由 千浪 于 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程序,和楼主需求不一
作者: shqf 时间: 2008-8-26 21:12
for /f "skip=1 tokens=1*" %i in ('wmic datafile where "filename='qq' and extension='exe'" get drive^,path') do (explorer %i%j)
作者: jellyhk 时间: 2008-8-28 00:00 标题: 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
这段代码在本网吧测试的时候显示:"找不到相应的注册表键值"
作者: jsj30651 时间: 2008-8-28 09:50
- for /f "skip=4 tokens=2,*" %%i in ('REG QUERY "HKEY_LOCAL_MACHINE\SOFTWARE\TENCENT\QQ" /v "Install"') do (
- set QQ=%%j.\QQ.exe
- ) >nul 2>nul
- cls
- if not '%QQ%'=='' goto fndqq
-
- echo 注册表中没有QQ的安装信息,正在全盘搜索……
- 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 (
- pushd %%a:\
- for /r %%b in (.) do (
- if exist %%b\QQ.exe set QQ=%%b\QQ.exe
- )
- ) >nul 2>nul
- popd
- set regadd=%QQ:~0,-8%
- REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\TENCENT\QQ" /v "Install" /t REG_SZ /d %regadd% >nul 2>nul
- cls
- :fndqq
-
- echo %QQ%
- pause
复制代码
先从注册表中查找QQ路径,如果找不到,说明QQ是绿色安装的,那么全盘搜索QQ
作者: pusofalse 时间: 2008-8-28 14:18
原帖由 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
这段代码在本网吧测试的时候显示:"找 ...
很明显是你的注册表问题了,^_^因为是网吧的电脑,在我电脑上测试正常。
作者: jellyhk 时间: 2008-9-1 13:26 标题: 回复 14楼 的帖子
我倒 拜托在前面加个@害我啊。
不知道能不能再加快点搜索的速度呢??
斑竹 你看他的代码有需要改进的么!!!本人不行!!!
作者: pusofalse 时间: 2008-9-1 14:17
如果你认为是在害你,就不要求助了啊,自己写的自己放心。^_^
作者: Batcher 时间: 2008-9-1 16:01 标题: 回复 16楼 的帖子
加个@跟害你有什么关系?
如果注册表里面找不到,需要进行全盘搜索,既然是全盘搜索就别奢望它有多快了,你用Windows的搜索功能同样很慢。
可能在遍历盘符的时候,判断一下盘符是否存在会节省一点时间,但效果估计不明显。
作者: jellyhk 时间: 2008-9-2 00:52 标题: 至谦
呵呵,就发了牢骚嘛!!
首先谢谢提供代码的各位。。。
辛苦了。。。。。。。。。。。。。。。。
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |