Я пытаюсь открыть список IP-адресов и пинговать их, а затем сохранить ответ в файл TXT. Пинг проходит и запускается без проблем и правильно сообщает, но я могу получить его, чтобы сохранить результаты в текстовом файле.
@echo off
SET LOGFILE=MyLogFile.log
call :Logit >> %LOGFILE%
exit /b 0
for /f "delims=" %%a in ( ' type "C:\Users\kelly\Desktop\Ping\computerlist.txt" ' ) do ping -n 1 %%a >nul && (echo %%a ok >> %LOGFILE% ) || (echo %%a failed to respond >> %LOGFILE% )
pause
batch-file
cmd.exe
ping
Келли
источник
источник
Ответы:
Просто убедитесь, что в списке компьютеров есть только одно имя хоста в каждой строке.
Ввод (computerlist.txt)
Выход (MyLogFile.log)
источник
Где у вас есть
do ping -n 1 %%a >nul
Это берет вывод ping и выбрасывает его.
Я думаю ты хочешь
do ping -n 1 %%a >%LOGFILE%
Кроме того, вы вызываете несуществующий регион / подпрограмму (Logit)
(Непроверенные)
~~ Редактировать на основе комментария ОП и теперь протестировав ~~
Я думаю, это то, что вы ищете:
источник
@echo off SET LOGFILE=C:\Users\kelly\Desktop\Ping\MyLogFile.log SET PINGLIST=C:\Users\kelly\Desktop\Ping\computerlist.txt for /f "delims=" %%a in (%PINGLIST%) do ping -n 1 %%a > %LOGFILE% && (echo %%a is ok >> %LOGFILE%) || (echo %%a is unreachable! >> %LOGFILE%)
Это работает, однако, это только пишет в первую строку, и если два терпят неудачу тогда, это показывает только последнюю, которая будет запущена. Я хочу показать, если это не удалось, если он был успешным на всех из них.ping -n 1 %%a > %LOGFILE%
аппенд вместо этого (ping -n 1 %%a >> %LOGFILE%
), но я не думаю, что это решит все ваши проблемы. Потому что ping возвращает 0 (считается успешным, если он получает ответ даже от вашего днс, сообщающего, что пункт назначения недоступен).