我有一个逗号分隔的字符串,其格式如下:
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%
答案 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
提供的优秀方法