2013-10-07 2 views
0

В настоящее время я сделал это, но в цикле for произошла непредвиденная ошибка.Создание сервера ping pong tool в пакете

Пожалуйста, помогите.

@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 ' истинно, если errorlevel равен '' ** или ** выше. (Это очевидно для foxidrive, но, возможно, не для всех) – jeb

+0

Просто, чтобы уточнить комментарий Jeb: если возвращаемый уровень ошибки равен 50, тогда каждый уровень ошибок от 0 до 49 (и 50) также будет проверяться как истинный. – foxidrive

+0

Я добавил еще один момент, чтобы остерегаться. – foxidrive

Смежные вопросы