我的批处理文件读取注册表项的值并将其值存储在变量key
中。所以值恰好是 "H:KMSpicoKMSpicoUninst.exe" /u0=KMSpico
.我想提取这个字符串中包含在 ""
中的部分。并将其存储在另一个变量中,例如 uninstall
.我可以通过以下代码轻松完成:SET uninstall=%key:~1,30%
.但问题是,Uninst.exe
前面的部分,即 指定Uninst.exe
位置的H:KMSpicoKMSpico
可能会根据用户安装软件的位置而变化,因此要提取的部分的长度可能会更改。但是上面的代码设置为最多提取 30
个字符的字符串。
因此,我想知道是否有办法,以便我们可以以某种方式知道第二"
的位置,从而知道要提取的字符数。或者,如果有其他方法,可以做到这一点。
简单的 FOR 循环将引号值保留为单个字符串。你知道它是第一个值,所以只需转到一个标签即可在单次迭代后脱离循环。
for %%A in (%key%) do set "uninstall=%%A"&goto :break
:break
所以你使用的是盗版窗户? :-)
试试这个
@echo off
rem :: I suppose you are capable to get the value from the registry and save is as variable.
set "reg_key="H:KMSpicoKMSpicoUninst.exe" /u0=KMSpico"
for /f "usebackq tokens=1" %%a in ('%reg_key%') do set "uninstaler=%%~a"
echo %uninstaler%