2013-10-07 69 views
0

我目前已經做到了這一點,但for循環中有一個意外的錯誤。批量製作服務器乒乓工具

請幫忙。

@ECHO OFF 
COLOR 1F 
TITLE (Ash's Script) Server Ping Pong 

rem --------------------------------------------------------------------------------------------------------------- 

ECHO Started %time% %date% > X:\Scripts\ServerPing.txt 

rem --------------------------------------------------------------------------------------------------------------- 

FOR /f "tokens=*" %%i in (X:\Scripts\ComputerLists\ServerList.csv) DO (
    PING %%i -n 1 -w 3 
    IF ERRORLEVEL 0 (
     ECHO %%i ONLINE %time%>> X:\Scripts\ServerPing.txt 
    ) ELSE ( 
     ECHO %%i OFFLINE %time%>> X:\scripts\ServerPing.txt 
    ) 
) 

rem --------------------------------------------------------------------------------------------------------------- 
+0

最後的回聲是否正確?你指定'scripts'目錄爲小寫,但在所有其他情況下,它是大寫 – omgmog

+0

@omgmog Windows不區分大小寫 – jeb

+0

你得到什麼類型的意外錯誤?真的是錯誤還是隻有意想不到的結果? – jeb

回答

1

IF ERRORLEVEL 0總是如此。

用這個代替:

if not errorlevel 1 

也改變了重定向的回聲文件:

>>X:\Scripts\ServerPing.txt ECHO %%i ONLINE %time% 

這消除了當最後一個字符是一個數字問題(甲流)

另一個問題是%time%在循環開始時進行評估 - 在日誌中獲得動態時間,然後啓用延遲擴展並使用!time!而不是%time%

+1

對'IF ERRORLEVEL 0'的補充總是爲真。這是真實的,因爲如果錯誤級別爲' **'或**,則'IF ERRORLEVEL '爲真。 (這對foxidrive很明顯,但可能不適用於其他人) – jeb

+0

只是爲了闡明jeb的評論:如果返回的錯誤級別是50,那麼從0到49(和50)的每個錯誤級別也將測試爲true。 – foxidrive

+0

我增加了另一點要小心。 – foxidrive