使用批处理脚本从字符串中提取key = value

问题描述

我在文本文件中有以下数据,并且我希望值name

文本文件内容

package: name='com.package.addres' versionCode='35' versionName='1.8.0 (RC)' compileSdkVersion='23' compileSdkVersionCodename='6.0-2438415'

解决方法

假设您的文本文件内容全部位于一行中,并且位于文件的第一行:

@Set /P "name=" 0< "mytextfile.txt"
@Set "name=%name:*name=%"
@Set "name=%name:~2%"
@Set "name=%name:'="&:"%"
@Echo %name% & Pause

只需根据需要替换行1上文本文件的名称(mytextfile.txt)。

如果您肯定name='value'将始终列在第一位,则也可以使用

@For /F "UseBackTokens=2Delims='" %%G In ("mytextfile.txt")Do @Set "name=%%G" 
@Echo %name% & Pause
,

此解决方案从数据行提取所有变量

@echo off
setlocal

rem Read the data line from the file
for /F "tokens=1*" %%a in (test.txt) do set "data=%%b"

rem Extract all variables
set "%data:' ='" & set "%"

rem For example:
echo name=%name%
echo versionName=%versionName%
echo compileSdkVersionCodename=%compileSdkVersionCodename%

输出示例:

name='com.package.addres'
versionName='1.8.0 (RC)'
compileSdkVersionCodename='6.0-2438415'

您可以在skip=#命令中使用FOR选项(后跟goto continue)以读取另一行。

,

使用For循环:

@for /f "tokens=2*" %%i in (in.txt) do @set "key=%%i"
@set "%key:'=%"
@echo %name%