Batch Index du Forum
S’enregistrerRechercherFAQMembresGroupesConnexion
Répondre au sujet Page 1 sur 1
Comment arrêter un batch
Auteur Message
Répondre en citant
Message Comment arrêter un batch 
Bonjour,

J'ai créé un petit batch qui permet d'ajouter la date et l'heure devant le résultat de la commande ping.
En fait, c'est l'équivalent d'un ping -t avec la date et l'heure devant.

Pour arreter mon batch, je dois faire Ctrl+C et répondre o pour "Terminer le programme de commandes".
Est-il possible de faire autrement ? Si oui comment ?

Code:

@echo off

REM Détection de l'os
ver | find /i "version 6.2." > nul
if %errorlevel%==0 set MyOS=win8
ver | find /i "version 6.1." > nul
if %errorlevel%==0 set MyOS=win7
ver | find /i "version 6.0." > nul
if %errorlevel%==0 set MyOS=winVista
ver | find /i "version 5.1." > nul
if %errorlevel%==0 set MyOS=winXP
ver | find /i "version 5.2." > nul
if %errorlevel%==0 set MyOS=win2003
ver | find /i "Windows 2000" > nul
if %errorlevel%==0 set MyOS=win2000
ver | find /i "Windows NT" > nul
if %errorlevel%==0 set MyOS=winNT
ver | find /i ">Windows ME" > nul
if %errorlevel%==0 set MyOS=winME
ver | find /i "Windows 98" > nul
if %errorlevel%==0 set MyOS=win98
ver | find /i "Windows 95" > nul
if %errorlevel%==0 set MyOS=win95

set ParamProblem=0

if "*%1*" == "**" set ParamProblem=1

if %ParamProblem% == 1 (
   echo.
   echo Syntax Error
   echo %0 HostIP HaveToLog
   echo Param list
   echo.
   echo HostIP : An IP Address or hostname
   echo HaveToLog : 1 if you want to have a log file
   echo             blank if you don't want log file
   echo The log file is d:\data\pinglog_^<HOSTIP>.txt
   goto pinglog_fin
)

set HostIP=%1
set HaveToLog=%2

set LogFile=d:\data\pinglog_%HostIP%.txt

title PingLog : %HostIP%

:determination_id_ligne_ping_debut
if "*%MyOS%*" == "*win8*" (
   set IdLigne=3
   goto determination_id_ligne_ping_fin
)
if "*%MyOS%*" == "*win7*" (
   set IdLigne=3
   goto determination_id_ligne_ping_fin
)
set IdLigne=4
:determination_id_ligne_ping_fin


:LOOP
for /f "delims=" %%j in ('ping -n 1 %HostIP% ^| sed -n %IdLigne%p') do (

   Set ReponsePing=%%j
   for /f "delims=" %%i in ('datex -f "YYYY-MM-DD HH:MM:SS"') do Set madate=%%i
   echox "%madate% %ReponsePing%"

   if NOT "*%HaveToLog%*" == "**" (
      echox "%madate% %ReponsePing%" >> %LogFile%
   )
   millisleep 500 >nul
   

   goto LOOP
)

:pinglog_fin




Message Publicité 
PublicitéSupprimer les publicités ?


Répondre en citant
Message Comment arrêter un batch 
Code:
exit


ou si tu en fait une commande externe

Code:
exit /b




Skype
Répondre en citant
Message Comment arrêter un batch 
Salut gautier019,

J'ai trouvé une solution acceptable.
En fait, j'ai ajouté ce code dans ma boucle.
Code:

   batbox /k_
   if %errorlevel%==32 exit /b


Il faut juste appuyer au bon moment pour sortir de la boucle et dans mon cas quitter le script.



L'intégralité de mon script modifié :
Code:

@echo off

REM Détection de l'os
ver | find /i "version 6.2." > nul
if %errorlevel%==0 set MyOS=win8
ver | find /i "version 6.1." > nul
if %errorlevel%==0 set MyOS=win7
ver | find /i "version 6.0." > nul
if %errorlevel%==0 set MyOS=winVista
ver | find /i "version 5.1." > nul
if %errorlevel%==0 set MyOS=winXP
ver | find /i "version 5.2." > nul
if %errorlevel%==0 set MyOS=win2003
ver | find /i "Windows 2000" > nul
if %errorlevel%==0 set MyOS=win2000
ver | find /i "Windows NT" > nul
if %errorlevel%==0 set MyOS=winNT
ver | find /i ">Windows ME" > nul
if %errorlevel%==0 set MyOS=winME
ver | find /i "Windows 98" > nul
if %errorlevel%==0 set MyOS=win98
ver | find /i "Windows 95" > nul
if %errorlevel%==0 set MyOS=win95

set ParamProblem=0

if "*%1*" == "**" set ParamProblem=1

if %ParamProblem% == 1 (
   echo.
   echo Syntax Error
   echo %0 HostIP HaveToLog
   echo Param list
   echo.
   echo HostIP : An IP Address or hostname
   echo HaveToLog : 1 if you want to have a log file
   echo             blank if you don't want log file
   echo The log file is d:\data\pinglog_^<HOSTIP^>.txt
   goto pinglog_fin
)

set HostIP=%1
set HaveToLog=%2

set LogFile=d:\data\pinglog_%HostIP%.txt

title PingLog : %HostIP%

REM Avant Win7, il fallait lire la 4e ligne d'un ping -n 1 <HOST>
REM Sous Win7 et Win8, il faut lire la 3e ligne
:determination_id_ligne_ping_debut
if "*%MyOS%*" == "*win8*" (
   set IdLigne=3
   goto determination_id_ligne_ping_fin
)
if "*%MyOS%*" == "*win7*" (
   set IdLigne=3
   goto determination_id_ligne_ping_fin
)
set IdLigne=4
:determination_id_ligne_ping_fin


:LOOP
for /f "delims=" %%j in ('ping -n 1 %HostIP% ^| sed -n %IdLigne%p') do (

   Set ReponsePing=%%j
   for /f "delims=" %%i in ('datex -f "YYYY-MM-DD HH:MM:SS"') do Set madate=%%i
   echox "%madate% %ReponsePing%"

   if NOT "*%HaveToLog%*" == "**" (
      echox "%madate% %ReponsePing%" >> %LogFile%
   )
   millisleep 500 >nul
   
   batbox /k_
   if %errorlevel%==32 exit /b

   goto LOOP
)




Message Comment arrêter un batch 


Montrer les messages depuis:
Répondre au sujet Page 1 sur 1
  



Index | créer un forum | Forum gratuit d’entraide | Annuaire des forums gratuits | Signaler une violation | Conditions générales d'utilisation
Copyright 2008 - 2016 // Batch