String 赢取批量-拆分&;连接

String 赢取批量-拆分&;连接,string,windows,batch-file,cmd,String,Windows,Batch File,Cmd,我有一个逗号分隔的字符串,其格式如下: host1.mydomain.net,host2.mydomain.net,host3.mydomain.net set "themes=Host1,Host2,Host3" set "NEWSTR1=http://%themes:,=:8080,http://%:8080" 我正在尝试使用批处理(不允许安装其他软件或使用powershell)在每个主机名前加上“http://”和“:8080”,然后将它们串在一起 http://host1.mydom

我有一个逗号分隔的字符串,其格式如下:

host1.mydomain.net,host2.mydomain.net,host3.mydomain.net
set "themes=Host1,Host2,Host3"
set "NEWSTR1=http://%themes:,=:8080,http://%:8080"
我正在尝试使用批处理(不允许安装其他软件或使用powershell)在每个主机名前加上“http://”和“:8080”,然后将它们串在一起

http://host1.mydomain.net:8080,http://host2.mydomain.net:8080,http://host3.mydomain.net:8080
下面是我尝试过的一种方法,先拆分字符串,然后创建一个新的字符串,但虽然我能够提取每个主机名,但似乎无法将它们连接起来。还考虑过将“http…”前置到字符串的开头,“:8080”前置到字符串的结尾,并将每个逗号替换为“:8080,http://”,但我无法使前置生效。如果这是Linux&sed的话,那就相当简单了,但批处理操作对我来说一直很难

@echo off
set themes=Host1,Host2,Host3
set NEWSTR1=
echo list = "%themes%"
for %%a in ("%themes:,=" "%") do (
   echo hostname is %%~a
   if NOT DEFINED NEWSTR1 (      
      set NEWSTR1=remote://%%~a:4447
      echo.%NEWSTR1%
   ) ELSE (
      set NEWSTR1=%NEWSTR1%,remote://"%%a":4447
      echo In the else %NEWSTR1% )
)

echo %NEWSTR1%

您可以在这里简单地使用子字符串替换,如下所示:

host1.mydomain.net,host2.mydomain.net,host3.mydomain.net
set "themes=Host1,Host2,Host3"
set "NEWSTR1=http://%themes:,=:8080,http://%:8080"

因此,每个
都被
:8080,http://
取代;在将
http://
前置并将
:8080
追加到整个字符串后,您将得到所需的结果。

您可以在此处使用子字符串替换,如下所示:

host1.mydomain.net,host2.mydomain.net,host3.mydomain.net
set "themes=Host1,Host2,Host3"
set "NEWSTR1=http://%themes:,=:8080,http://%:8080"

因此,每个
都被
:8080,http://
取代;在将
http://
前置并将
:8080
追加到整个字符串后,您将获得所需的结果。

阅读了解,了解代码不起作用的原因。逻辑本身似乎没问题。请阅读了解,为什么您的代码不起作用。逻辑本身似乎很好。这正是我想要的。简洁明了,不需要for循环。谢谢,太好了。这正是我想要的。简洁明了,不需要for循环。谢谢