Создайте журнал проверки связи с отправленными пакетами и потерянным результатом подсчета - PullRequest
1 голос
/ 15 октября 2019

Я использую файл .bat, который проверяет ping в журнале.

Сейчас у меня есть этот скрипт.

@echo off
:LOOPSTART
echo %time% >> pinglog.txt
ping 192.168.1.1 -n 4 >> pinglog.txt
GOTO LOOPSTART

Когда я запускаю этот файл .bat, окна cmd остаются открытыми. И я пытаюсь получить результат ping также в последнем случае, когда кто-то закрывает окна cmd и файл .bat перестает работать. Как:

ping
ping
ping
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss)

Так же, как событие Ctrl + C при закрытии cmd

Ответы [ 2 ]

0 голосов
/ 15 октября 2019

Невозможно продолжить выполнение каких-либо задач в пакете с помощью CTRL + C или закрытия batch-file. Это просто невозможно, сценарий уничтожен, что означает, что НИЧЕГО, что должно было произойти, теперь прервано в текущем процессе.

Однако существуют другие способы взлома, такие как перенаправление постоянных данных и выход из сценария любым из них. CTRL + C или выход, нажав крестик в верхнем правом углу X , последнее событие, зафиксированное в журнале, останется.

@echo off
setlocal enabledelayedexpansion
set sent=0 & set received=0 & set lost=0 & set loss=0
:start
for /f "tokens=4,7,10,11delims=,( " %%i in ('ping 192.168.1.1 -n 2 ^| findstr "Packets:"') do (
    set _se=%%i
    set _re=%%j
    set _lst=%%k
    set _lss=%%l
    set _se=!_se:,=!
    set _re=!_re:,=!
    set _lst=!_lst:,=!
    set _lss=!_lss:%%=!
    set /a sent+=!_se!
    set /a received+=!_re!
    set /a lost+=!_lst!
    set /a loss+=!_lss!
)
echo !time: =0! Packets: Sent = !sent!, Received = !received!, Lost = !lost! (!loss! %% loss)>pinglog.log
goto :start

Опять же, этовзломать, но в значительной степени один из немногих способов вы достигнете того, что вы хотите.

0 голосов
/ 15 октября 2019

Во-первых, обратите внимание на наименование вашего командного файла как Ping.bat

Во-вторых, вы должны удалить метку LoopStart и Goto LoopStart

@echo off
echo %time% >pinglog.txt
ping 192.168.1.1 -n 4 >>pinglog.txt
pause
...