批处理文件中的子字符串

时间:2018-03-30 07:12:36

标签: batch-file

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符号不适合我..还有其他选择吗?

3 个答案:

答案 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 $显示所有变量名称);当然,你可以删除它。请注意,如果字符串包含*?等通配符字符,则此方法会失败。