User_Name=root;Password=1234;Server=192.168.1.49;DriverID=MySQL;Database=dbTest
如何在批处理文件中解析此字符串。关于子串的所有样本都是X-to-Y ..但我的字符串是动态的。
我希望介于=
和;
之间并设置变量:
username = root
password = 1234
server = 192.168.1.49
driverid = MySQL
database= dbTest
:~start,length
符号不适合我..还有其他选择吗?
答案 0 :(得分:2)
@ECHO OFF
SETLOCAL
SET "string=User_Name=root;Password=1234;Server=192.168.1.49;DriverID=MySQL;Database=dbTest"
FOR %%a IN ("%string:;=","%") DO SET %%a
SET
GOTO :EOF
您不会说出您的字符串存储位置,因此我将其放入string
。
字符串替换用;
替换每个","
,因此for
id执行的命令设置" user_name = root","密码。 ..这是set
命令的有效但很少使用的应用程序。
答案 1 :(得分:1)
如果您知道变量是什么,那么aschipfl的答案中使用的方法的这种修改就足够了,(受合理的字符限制):
Set "String=User_Name=root;Password=1234;Server=192.168.1.49;DriverID=MySQL;Database=dbTest"
Set "%String:;="&Set "%"&Set "String="
@Pause
我已经离开了,所以你可以看到它正在使用中,
答案 2 :(得分:0)
replacing every ;
by ";"
如何将结果字符串括在""
之间,以便获得"User_Name=root";"Password=1234";...
?然后可以使用标准for
loop(无/F
选项!)进行拆分,因为;
是cmd
的标准标记分隔符,就像 SPACE , TAB ,,
和=
。后者受引号保护。这就是我的意思:
set "STRING=User_Name=root;Password=1234;Server=192.168.1.49;DriverID=MySQL;Database=dbTest"
set STRING="%STRING:;=";"%"
for %%I in (%STRING%) do set "$%%~I"
set $
我只是在每个变量名称前加上一个$
符号,以便于演示(set $
显示所有变量名称);当然,你可以删除它。请注意,如果字符串包含*
或?
等通配符字符,则此方法会失败。