Batch Scripting—根据输入创建变量

我正在尝试使用批处理脚本来根据空格分隔的计算机名称列表动态创建和分配变量。 计算机名称分配给%hosts%(从生产脚本中的另一个文件中提取)。我想要完成的是计算所引入的主机数量(它们用空格分隔),然后将每个主机分配给一个变量,该变量包含与主机列出的顺序相关的数字。 这是代码片段:
@echo off
setlocal EnableDelayedExpansion

SET hosts=10.10.0.0 192.168.0.0 W2K3-Server
SET /a counter=0

FOR %%I IN (%hosts%) DO (
    SET /a counter+=1
)

echo Total= !counter!

FOR /L %%A IN (1,1,!counter!) DO (
    FOR %%I in (%hosts%) DO (
        IF [!host%%A!]==[] SET host%%A=%%I
        echo host%%A= !host%%A!
    )
)

endlocal
该脚本的输出是:
Total= 3
host1= 10.10.0.0
host1= 10.10.0.0
host1= 10.10.0.0
host2= 10.10.0.0
host2= 10.10.0.0
host2= 10.10.0.0
host3= 10.10.0.0
host3= 10.10.0.0
host3= 10.10.0.0
我希望看到的结果是:
Total= 3
host1= 10.10.0.0
host2= 192.168.0.0
host3= W2K3-Server
我知道为什么我得到第一个结果。没有检查是否满足条件。在这种情况下,条件是将其中一个主机设置为变量。一旦设置了变量,我需要知道如何走出循环中的“FOR %% I in(%hosts%)”部分。 这可以批量生产吗?这篇文章对我正在进行的项目并不重要,但它会通过在脚本的其他方面开辟一些新的可能性来增加价值。     
已邀请:
像这样?
@echo off
setlocal EnableDelayedExpansion

SET hosts=10.10.0.0 192.168.0.0 W2K3-Server
SET /a counter=0

FOR %%I IN (%hosts%) DO (
    SET /a counter+=1
    IF [!host%%I!]==[] SET host!counter!=%%I
)

echo Total= !counter!

FOR /L %%A IN (1,1,!counter!) DO (
    echo host%%A= !host%%A!
)

endlocal
    
试试这个
@echo off
setlocal EnableDelayedExpansion

SET hosts=10.10.0.0 192.168.0.0 W2K3-Server
SET /a counter=0

FOR %%I IN (%hosts%) DO (
    SET /a counter+=1
    set host!counter!=%%I
)

echo Total= !counter!

FOR /L %%A IN (1,1,!counter!) DO (
  echo host%%A = !host%%A!
)

endlocal
    

要回复问题请先登录注册