W dniu 2017-06-07 o 08:51, adam_l@poczta.onet.pl pisze:
Może coś takiego:
---TEST.BAT---
@echo off
IF NOT (%1)==() goto start
echo.
echo Brak parametru - adresu IP
goto koniec
:start
SET OK=X
ECHO %DATE% %TIME% *** START BADANIA ADRESU %1 ***
ECHO %DATE% %TIME% *** START BADANIA ADRESU %1 *** >>test_%1.log
:petla
PING -n 2 -w 1000 %1 >nul
IF ERRORLEVEL 1 GOTO blad
IF %OK%==T GOTO petla
SET OK=T
ECHO %DATE% %TIME% adres %1 OK
ECHO %DATE% %TIME% adres %1 OK >>test_%1.log
GOTO petla
:blad
REM ECHO tu wstaw kilka znaków o kodzie ASC 7 by mieć sygnał z głośniczka
IF %OK%==N GOTO petla
SET OK=N
ECHO %DATE% %TIME% adres %1 ERROR
ECHO %DATE% %TIME% adres %1 ERROR >>test_%1.log
GOTO petla
:koniec
---EOF---
W wyniku otrzymasz tylko daty i czasy zmian OK<->ERROR
Adam
OK :) Upewniłeś mnie w nienawiści do GOTO :) Cukiereczek - symulacja
obiektowości (nie piszę o procedurach/funkcjach - call), tu GOTO służy za
return/exit (powrót/na koniec). Nie używam - wolę .js (ale możliwości były i
są).
@Echo Off
setlocal enabledelayedexpansion
::
:: Przykładowa klasa w cmd do odczytu pliku linia po linii
::
:: ======================
:: Wywołanie
:: ======================
call :Plik klasa info.txt
%klasa.read%
echo Ilosc linii : %klasa.count%
echo Druga linia : %klasa.lines.1%
echo Trzecia linia: %klasa.lines.2%
goto :EOF
:: ==============
:: Konstruktor
:: ==============
:Plik
::
:: %1 to suffiks (nazwa klasy)
:: %2 to wartość (nazwa pliku, więc nazwa_klasy.name=wartość)
::
set %1.name=%2
::
:: metoda: nazwa_klasy.read będzie wywoływała sub (Plik.read)
:: z parametrem będącym nazwą klasy
::
set %1.read=call :Plik.read %1
goto :EOF
:: ========================
:: Metoda - odczyt z pliku
:: ========================
:Plik.read
set j=0
for /f "delims=" %%i in ('type !%1.name!') do (
set %1.lines.!j!=%%i
set /a j=!j!+1
)
set %1.count=%j%
goto :EOF
--
Artur
|