赢批 - 拆分&串联

时间:2016-10-28 18:23:02

标签: string windows batch-file

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

host1.mydomain.net,host2.mydomain.net,host3.mydomain.net

我正在尝试使用批处理(不允许安装其他软件或使用powershell)来预先添加“http://”并将“:8080”附加到每个主机名,然后将它们全部串在一起。

http://host1.mydomain.net:8080,http://host2.mydomain.net:8080,http://host3.mydomain.net:8080

下面是我尝试过的一种方法,拆分字符串然后创建一个新的字符串,但是当我能够提取每个主机名时,我似乎无法连接它们。还考虑将“http ...”添加到字符串的开头,“:8080”到最后,并用“:8080,http://”替换每个逗号,但我无法获得前置工作。如果这是Linux&看起来它很简单,但批量操纵对我来说一直很难。

@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%

2 个答案:

答案 0 :(得分:4)

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

set "themes=Host1,Host2,Host3"
set "NEWSTR1=http://%themes:,=:8080,http://%:8080"

所以每个,都会被:8080,http://取代;在预先加http://并将:8080附加到整个字符串后,您将获得所需的结果。

答案 1 :(得分:-2)

试试这个:

@Echo Off
(Set themes=host1.mydomain.net,host2.mydomain.net,host3.mydomain.net)
(Set pre=http://)
(Set post=:8080)
For %%A In (%themes%) Do Call Set NEWSTR1=%%NEWSTR1%%%pre%%%A%post%,
Set "NEWSTR1=%NEWSTR1:~,-1%"
Echo %NEWSTR1%
Timeout -1 1>Nul

你可以替换第5行和第5行。 6,以下行

Call Set "NEWSTR1=%pre%%%themes:,=%post%,%pre%%%%post%"

使用 aschipfl

提供的优秀方法