2014-10-10 41 views
0

下面的查询delims标签不工作的批处理文件

reg query HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{CB708F54-6934-4636-8E3C-D10AD3A8231F} /v InstallLocation 

回报

InstallLocation REG_SZ c:\Program Files (x86)\abcd\xyz\ 

我想获取c:\Program Files (x86)\abcd\xyz\我不能够获取我使用下面的命令

for /f "tokens=3 delims= " %%a in ('reg query HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{CB708F54-6934-4636-8E3C-D10AD3A8231F} /v InstallLocation') do set ProductName=%%a 
echo "%ProductName%" 

我只得到c:\program 请让我知道什么是错的

回答

0

你在白色的空间分割你的字符串,只需要第三个令牌,尝试之后的第三选择所有:

for /f "tokens=3,* delims= " %%a in ('reg query HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{CB708F54-6934-4636-8E3C-D10AD3A8231F} /v InstallLocation') do set ProductName="%%a%%b" 
+0

非常感谢它的工作:-) – 2014-10-10 06:16:37

+0

@MC ND的回答会给你更多的相关信息(空间是标准的DELIM字符所以你没有指定它) – 2014-10-10 06:20:59

+0

它工作在Windows 7中,它不工作Windows xp – 2014-10-10 06:59:47

0

我无法重现你的行为,对我来说(Windows 7)中reg.exe不输出标签,但空格作为分隔符。

处理这种情况下的“正确”的方法是使用任何空间/选项卡作为分隔符(在for /f默认行为),则丢弃所述第一令牌的线(InstallLocation字面),检索第二令牌(REG_SZ字面)第三个标记为,其余内容为

for /f "tokens=2,*" %%a in (' 
    reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{CB708F54-6934-4636-8E3C-D10AD3A8231F}" /v InstallLocation 
') do set "ProductName=%%b" 
echo "%ProductName%" 
+0

谢谢,它的工作原理:-) – 2014-10-10 08:24:52