如何从Windows批处理文件中的字符串中检索子字符串?

时间:2013-07-17 08:58:35

标签: windows batch-file

如何从以下输入中检索字符串“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\

2 个答案:

答案 0 :(得分: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”不会更改此litte批处理文件中的任何内容,因此我将其删除。

总结:这对我有用:

@echo off
for /f "eol=! tokens=3*" %%i in ('reg query "HKEY_CURRENT_USER\Software\Conceptworld\Piky\Settings" /v "installpath"') do echo %%i %%j

答案 1 :(得分: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