2013-10-16 42 views
1

我試圖繞過環的固定次數,但我發現我似乎無法做此發言工作,腳本在DOS(NT)在Windows Server批處理文件2008

REM @echo off 
SET TotalCores=12 
SET Sockets=2 
SET SlaveNodes=4 
SET /A mycores = %TotalCores%/%SlaveNodes% 
FOR /L %i in (0,1,%SlaveNodes%) DO (call slavenode.bat %i %mycores) 

爲什麼我有以下問題嗎?

SET /A mycores = 12/4 
SlaveNodesi was unexpected at this time. 

我的格式正確嗎?

回答

3

刪除空格,並使用雙百分號圍繞您的循環變量的標誌:

REM @echo off 
SET TotalCores=12 
SET Sockets=2 
SET SlaveNodes=4 
SET /A mycores=%TotalCores%/%SlaveNodes% 
FOR /L %%i in (0,1,%SlaveNodes%) DO (call slavenode.bat %%i %mycores%) 
+1

'set/a'與空格沒有問題。 (雖然一個簡單的'set'會造成麻煩......) – Stephan

+2

set/a不喜歡var名稱和賦值('=')之間的空格。它只是造成了一個稍微不同的錯誤。 –

+0

現在的其他問題之一是如何傳遞核心數量。我在我的slavenode.bat文件中使用%2訪問內核數量時遇到了問題。 – disruptive

1

在批處理文件中,你必須使用雙percentsigns爲對變量:

FOR /L %%i in (0,1,%SlaveNodes%) DO (call slavenode.bat %%i %mycores%) 

(你也錯過了你的變量%mycores%一%