我想要使用批處理腳本基於空格分隔的計算機名稱列表動態地創建和分配變量。批處理腳本 - 基於輸入創建變量
將計算機名稱分配給%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%)」部分。
這是可能的批處理?這件作品對於我正在研究的項目並不重要,但它會通過在劇本的其他方面開闢一些新的可能性而增加價值。
真棒這個作品。謝謝! – 2011-03-10 17:51:34