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

如何从Windows批处理文件中的字符串中检索子字符串?,windows,batch-file,Windows,Batch File,如何从以下输入中检索字符串“C:\Program Files(x86)\Study\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=:"

如何从以下输入中检索字符串“C:\Program Files(x86)\Study\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
结果是:
\ProgramFiles(x86)\dumby\MS\

req query "HKEY_CURRENT_USER\Software\Stupid\MS" /v "installpath"
在我的xp上返回此内容(很抱歉,我目前没有更新的内容)

当使用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

这应该是可行的-在显示tab的位置放置一个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

@iask I使用了%%I元变量而不是%%j。以上代码已编辑。
@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