Пинг IP-адрес и сохранить результат в текстовый файл.

539
Kelly

Я пытаюсь открыть список 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 
1
Это выдержка из вашего командного файла? Я не вижу ярлык для Logit, просто оператор вызова. sippybear 6 лет назад 0
@sippybear нет, это весь мой сценарий. Я, вероятно, пропустил что-то, что я обычно не собираю в файлах bat, поэтому я гуглил и собирал вещи. Все было хорошо до момента добавления результатов в текстовый файл. Kelly 6 лет назад 0

2 ответа на вопрос

1
sippybear
@echo off SET LOGFILE=C:\Temp\MyLogFile.log SET PINGLIST=C:\Users\kelly\Desktop\Ping\computerlist.txt for /f "delims=" %%a in (%PINGLIST%) DO ping -n 1 %%a > nul && (echo %%a is ok >> %LOGFILE%) || (echo %%a is unreachable! >> %LOGFILE%) 

Просто убедитесь, что в вашем списке компьютеров есть только одно имя хоста в каждой строке.

Ввод (computerlist.txt)

gooobler google.com msn.com localhost 

Выходные данные (MyLogFile.log)

gooobler is unreachable!  google.com is ok  msn.com is unreachable!  localhost is ok  
Получил, чтобы работать, я должен был запустить его как администратор Kelly 6 лет назад 0
0
mshafer

Где у вас есть do ping -n 1 %%a >nul

Это берет вывод ping и выбрасывает его.

Я думаю ты хочешь

do ping -n 1 %%a >%LOGFILE%

Кроме того, вы вызываете несуществующий регион / подпрограмму (Logit)

@echo off  SET LOGFILE=MyLogFile.log call :Logit >> %LOGFILE%  exit /b 0  :Logit 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 

(Непроверенные)

~~ Редактировать на основе комментария ОП и теперь протестировав ~~

Я думаю, это то, что вы ищете:

@ECHO OFF SET LOGFILE=logFile.txt SET TEMP_FILE=temp.txt SET PINGLIST=comps.txt   REM contatenate log file echo. > %LOGFILE%  for /f "delims=" %%a in (%PINGLIST%) do ( REM do ping and store response - using a temp file because we care about the response more than once. ping -n 1 %%a > %TEMP_FILE%  REM append response to log file type %TEMP_FILE% >> %LOGFILE%  REM from: https://stackoverflow.com/a/8531199 REM check if ping determined the host is unreachable by searching the output findstr /c:"Destination host unreachable" /c:"could not find host" %TEMP_FILE% > NUL  REM if the errorlevel is at least 1 (unsuccessful at finding string) if errorlevel 1 ( REM then must have reached host echo %%a is ok >> %LOGFILE% ) ELSE ( REM else, we found the string that sais we cannot reach the host echo %%a is UNREACHABLE^! >> %LOGFILE% ) REM cleanup del %TEMP_FILE% ) exit /b 
Так что теперь у меня есть это. `@echo off SET LOGFILE = C: \ Users \ kelly \ Desktop \ Ping \ MyLogFile.log SET PINGLIST = C: \ Users \ kelly \ Desktop \ Ping \ computerlist.txt для / f" delims = "%% a in (( % PINGLIST%) сделать пинг -n 1 %% a>% LOGFILE% && (эхо %% a в порядке >>% LOGFILE%) || (echo %% a недоступен! >>% LOGFILE%) `Он работает, однако записывает только в первую строку, а если два сбоя, то показывает только последний из них. Я хочу показать, если это не удалось, если он был успешным на всех из них. Kelly 6 лет назад 0
Хммм, я думаю, что вы хотите сделать `ping -n 1 %% a>% LOGFILE%` дополнением (`ping -n 1 %% a >>% LOGFILE%`), но я не думаю, что это решает все твои проблемы. Потому что ping возвращает 0 (считается успешным, если он получает ответ даже от вашего днс, который говорит, что пункт назначения недоступен). mshafer 6 лет назад 0
@ Келли Я обновил свой пост. Вам нужно настроить пути к файлам, которые вы хотите использовать, но я думаю, что это будет работать для вас. (Если у вас могут быть пробелы в путях, вам также нужно будет заключать в кавычки переменные, когда они используются). mshafer 6 лет назад 0

Похожие вопросы