批处理查找注册表项的问题

来源:百度知道 编辑:UC知道 时间:2024/07/07 10:03:40
用for语句查找注册表项一般是拿空格当delims吧,但如果查找结果里也包含空格的话该怎么办?
比如,查找的项为Installation Directory REG_SZ C:\Program Files\Windows Media Player,如何把各个字段抓出来?
谢谢!
呵呵,谢谢!你们的方法真的各有优点,不错。但似乎都没有一个通用的方法哦。如果碰到随机的三个字段,能准确的找出来吗?比如,如果碰到值类型为REG_EXPAND_SZ,那么09cdy的方法就不能用了。忆林子的话依赖于查找条件,如果不是用Installation Directory来找的话也不能用了。请二位再帮忙想想,多谢多谢!

注意更换查找关键字,或者可以去掉Findstr,do 后面用赋值,也可以,
@echo off
for /f "tokens=1* delims=_" %%1 in ('reg query "HKLM\SOFTWARE\microsoft\mediaplayer" /v "Installation Directory"^| findstr /i "directory"') do for /f "tokens=1*" %%3 in ("%%~2")do echo %%4
pause>nul

你依然可以用默认的空格作为分隔符。不过tokens要变一下
如下的例子中%%d取得的就是那个路径。
@echo off
for /f "tokens=1-3,*" %%a in (
查询的结果:Installation Directory REG_SZ C:\Program Files\Windows Media Player
) do (
echo %%d
)
pause