加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

Windows批处理文件 – 拆分字符串以设置变量

发布时间:2020-12-13 20:42:01 所属栏目:Windows 来源:网络整理
导读:我觉得我正在围绕着FOR循环选项. 我正在尝试获取一个字符串(输出一个命令)并将其拆分为逗号,然后使用每个值来设置,例如 字符串:USER = Andy,IP = 1.2.3.4,HOSTNAME = foobar,PORT = 1234 所以我想在逗号上拆分,然后在SET中逐字地使用该变量.我不知道提前会
我觉得我正在围绕着FOR循环选项.

我正在尝试获取一个字符串(输出一个命令)并将其拆分为逗号,然后使用每个值来设置,例如

字符串:USER = Andy,IP = 1.2.3.4,HOSTNAME = foobar,PORT = 1234

所以我想在逗号上拆分,然后在SET中逐字地使用该变量.我不知道提前会有多少变量.

我尝试过这样的事情:

FOR %%L IN (%MYSTRING%) DO ECHO %%L

但是这也是等号的分裂,所以我最终得到了

USER
Andy
IP
1.2.3.4

等等

我只是希望能够做到以下所以我可以SET USER = Andy等,类似于:

FOR %%L IN (%MYSTRING%) DO SET %%L

我错过了哪些选项或标志?

普通FOR命令(无/ F选项)中元素的默认分隔符是空格,制表符,逗号,分号和等号,并且无法修改它,因此您可以使用FOR / F命令以这种方式解决此问题:
@echo off 

set MYSTRING=USER=Andy,IP=1.2.3.4,HOSTNAME=foobar,PORT=1234

:nextVar
   for /F "tokens=1* delims=," %%a in ("%MYSTRING%") do (
      set %%a
      set MYSTRING=%%b
   )
if defined MYSTRING goto nextVar
echo USER=%USER%,IP=%IP%,HOSTNAME=%HOSTNAME%,PORT=%PORT%

解决此问题的另一种方法是首先获取变量名称,然后在常规FOR命令中为每对值执行赋值:

setlocal EnableDelayedExpansion

set varName=
for %%a in (%MYSTRING%) do (
   if not defined varName (
      set varName=%%a
   ) else (
      set !varName!=%%a
      set varName=
   )
)
echo USER=%USER%,PORT=%PORT%

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读