中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 【讨论】rar的路径这样查询注册表对吗?
作者:
标题: 【讨论】rar的路径这样查询注册表对吗? 上一主题 | 下一主题
IceCrack
中级用户

DOS之友


积分 332
发帖 168
注册 2005-10-6
来自 天涯
状态 离线
『楼 主』:  【讨论】rar的路径这样查询注册表对吗?


for /f "skip=4 tokens=3 delims= " %%i in ('reg quedery "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\WinRAR.exe" /v "path" ') do set rarpath=%%~dpi
最近要用到正确定位rar的位置的bat.我是通过上面的方面来的.但是不知道这个是否有通用性.是否正解.



测试环境: windows xp pro sp2    高手是这样炼成的:C:\WINDOWS\Help\ntcmds.chm
2006-7-27 00:45
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (369525996)  编辑帖子  回复  引用回复
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 2 楼』:  


@echo off
for /f "tokens=2* skip=4" %%i in ('reg query "hklm\software\microsoft\windows\currentversion\app paths\winrar.exe" /v "path"')do @echo %%j
pause


2006-10-6 11:27
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
vkill
金牌会员





积分 4103
发帖 1744
注册 2006-1-20
来自 甘肃.临泽
状态 离线
『第 3 楼』:  

注册表查询可以的

2006-10-7 07:53
查看资料  发送邮件  访问主页  发短消息 网志   编辑帖子  回复  引用回复
pengfei
银牌会员




积分 1218
发帖 485
注册 2006-7-21
来自 湖南.娄底
状态 离线
『第 4 楼』:  

楼主的思路很不错, 注册表里的数据是绝对正确的. 通不通用这就要看reg query输出的格式了. 如果格式不同将对提取指定字符造成阻碍.

2楼朋友的代码很不错, 改进一下:
@echo off
for /f "tokens=2*" %%i in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\WinRAR.exe" /v "path" ^| findstr /i /c:"REG_SZ"') do (
    echo %%j
)
pause
楼主的reg quedery命令在我电脑上不是这样的. 而一楼代码采取路径扩充显然是错误的, 因为%%i并不是完整的路径格式, 是不能使用路径扩充的.

2006-10-7 09:12
查看资料  发送邮件  发短消息 网志  OICQ (573381312)  编辑帖子  回复  引用回复
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 5 楼』:  

嘿嘿,pengfei兄的代码确实比我高级些啊~
我用的是skip=4,而兄弟用的是一个find "REG_SZ" /i


2006-10-7 10:37
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
pengfei
银牌会员




积分 1218
发帖 485
注册 2006-7-21
来自 湖南.娄底
状态 离线
『第 6 楼』:  

其实你2楼跳过前四行的代码执行效率更高.

而我用findstr查找字符串值显示的那一行是因为担心不同系统显示不同, 而指定查找字符串的显示行则可以减少发生错误的可能.

2006-10-7 21:18
查看资料  发送邮件  发短消息 网志  OICQ (573381312)  编辑帖子  回复  引用回复
my3439955
中级用户




积分 272
发帖 99
注册 2006-6-2
状态 离线
『第 7 楼』:  

楼主提到通用性
好象2000不支持reg这个命令吧
在2000下可以用
regedit /e
来导出注册表路径进行处理

2006-10-8 00:18
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
electronixtar
铂金会员





积分 7493
发帖 2672
注册 2005-9-2
状态 离线
『第 8 楼』:  

其实XP出来以前的批处理编程对注册表的操作都是通过 regedit 来完成的




C:\>BLOG http://initiative.yo2.cn/
C:\>hh.exe ntcmds.chm::/ntcmds.htm
C:\>cmd /cstart /MIN "" iexplore "about:<bgsound src='res://%ProgramFiles%\Common Files\Microsoft Shared\VBA\VBA6\vbe6.dll/10/5432'>"
2006-10-8 05:22
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
bob1989
中级用户





积分 322
发帖 144
注册 2007-1-10
状态 离线
『第 9 楼』:  

regedit /e
生成好大一个文件再去里面找吗?

2007-4-23 05:54
查看资料  发短消息 网志   编辑帖子  回复  引用回复
flyinspace
银牌会员





积分 1206
发帖 517
注册 2007-3-25
状态 离线
『第 10 楼』:  

regedit /e “文件名” “路径名”

2000下似乎只有。

regedit /e 1.txt "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\WinRAR.exe"

for /f "tokens=1* delims== " %%i in ('type 1.txt ^| findstr /i "=" ^| findstr /i

"path"') do (
             echo 路径名:%%~i
             echo 路径:%%~fj
            )
pause



知,不觉多。不知,乃求知
2007-4-23 07:45
查看资料  发短消息 网志   编辑帖子  回复  引用回复
nbic
初级用户




积分 135
发帖 61
注册 2007-4-14
状态 离线
『第 11 楼』:  

我也学了一招。。。不错 。。

2007-4-23 14:40
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: