如何使用批处理文件查找字符的位置并提取字符串的一部分



我的批处理文件读取注册表项的值并将其值存储在变量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%

最新更新