Board logo

标题: 【讨论】rar的路径这样查询注册表对吗? [打印本页]

作者: IceCrack     时间: 2006-7-27 00:45    标题: 【讨论】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.我是通过上面的方面来的.但是不知道这个是否有通用性.是否正解.
作者: lxmxn     时间: 2006-10-6 11:27

@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

作者: vkill     时间: 2006-10-7 07:53
注册表查询可以的
作者: pengfei     时间: 2006-10-7 09:12
楼主的思路很不错, 注册表里的数据是绝对正确的. 通不通用这就要看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并不是完整的路径格式, 是不能使用路径扩充的.
作者: lxmxn     时间: 2006-10-7 10:37
嘿嘿,pengfei兄的代码确实比我高级些啊~
我用的是skip=4,而兄弟用的是一个find "REG_SZ" /i

作者: pengfei     时间: 2006-10-7 21:18
其实你2楼跳过前四行的代码执行效率更高.

而我用findstr查找字符串值显示的那一行是因为担心不同系统显示不同, 而指定查找字符串的显示行则可以减少发生错误的可能.
作者: my3439955     时间: 2006-10-8 00:18
楼主提到通用性
好象2000不支持reg这个命令吧
在2000下可以用
regedit /e
来导出注册表路径进行处理
作者: electronixtar     时间: 2006-10-8 05:22
其实XP出来以前的批处理编程对注册表的操作都是通过 regedit 来完成的
作者: bob1989     时间: 2007-4-23 05:54
regedit /e
生成好大一个文件再去里面找吗?
作者: flyinspace     时间: 2007-4-23 07:45
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
作者: nbic     时间: 2007-4-23 14:40
我也学了一招。。。不错 。。