0

如何从以下输入中检索字符串“C:\Program Files (x86)\Stupid\MS\”?

HKEY_CURRENT_USER\Software\Stupid\MS`    
     installpath    REG_SZ    C:\Program Files (x86)\Stupid\MS\`

请使用 windows bat 文件。

我的方式:

@echo off
Setlocal enabledelayedexpansion 
for /f "tokens=2,* delims=:" %%i in ('reg query "HKEY_CURRENT_USER\Software\Stupid\MS" /v "installpath"') do ( 
    echo %%i
) 
pause

结果是:\Program Files (x86)\Stupid\MS\

4

2 回答 2

1
req query "HKEY_CURRENT_USER\Software\Stupid\MS" /v "installpath"

在我的 xp 上返回这个(抱歉,我目前没有更新的内容)

! REG.EXE VERSION 3.0

HKEY_CURRENT_USER\Software\Stupid\MS    
 installpath    REG_SZ    C:\Program Files (x86)\Stupid\MS

当使用 delim 的默认值(一个空格)时,我们真正需要的是最后一行的第三个和后面的标记。“第三个及以下”是tokens=3*。第三个令牌将在 %%i 中可用,“和以下”在 %%j 中可用。这个字母是自动分配的。

不幸的是,第一行还有第三个和后面的标记,所以我们需要排除第一行。我们可以通过使用 eol 选项排除以“!”开头的行来做到这一点。“Setlocal enabledelayedexpansion”不会改变这个小批处理文件中的任何内容,所以我删除了它。

摘要:这对我有用:

@echo off
for /f "eol=! tokens=3*" %%i in ('reg query "HKEY_CURRENT_USER\Software\Conceptworld\Piky\Settings" /v "installpath"') do echo %%i %%j
于 2013-07-17T09:43:44.533 回答
1

这应该可行 - 在它说 TAB 的地方放一个制表符并留下空格。

@echo off
for /f "tokens=2,* delims=:TAB " %%i in ('reg query "HKEY_CURRENT_USER\Software\Stupid\MS" /v "installpath"') do ( 
    set "var=%%j"
) 
echo "%var%"
pause
于 2013-07-17T12:06:50.867 回答