[BATCH] fichier de ping a optimiser

Fermé
christboy Messages postés 157 Date d'inscription jeudi 31 mai 2007 Statut Membre Dernière intervention 30 juillet 2008 - 31 mai 2007 à 15:56
christboy Messages postés 157 Date d'inscription jeudi 31 mai 2007 Statut Membre Dernière intervention 30 juillet 2008 - 1 juin 2007 à 08:31
bonjour,
en farfouillant sur le net j'ai reussi a faire ce fichier batch (voir ci-dessous) mais un fichier temporaire est creer et j'aimerai éviter cela car un fichier qui ne sert que lorsque l'application tourne n'est pas très utile.
ECHO OFF
cls
REM *********************************************************
REM **  Test de ping sur une liste de machines            ***
REM **            					  ***
REM *********************************************************

set /p nombre_reseau_to_scan="nombre de reseau a scanner : "

REM *************************************************
REM *** Création du nom des fichier de destination ***
REM *************************************************
set heure=%time:~0,8%
set fichier_temporaire="temp.txt"
set nom_fichier_ok="reponses_ok  [%date:/=-%] [%heure::=.%].txt"
set nom_fichier_no="reponses_no  [%date:/=-%] [%heure::=.%].txt"
set /a nombre_reponses_ok=0
set /a nombre_reponses_no=0

REM *************************************
REM *** Création du fichier d'adresse ***
REM *************************************

echo.> %fichier_temporaire%
set /a nb_to_ping=0
:MASTER
set /p debut_addr="saisir l'adrresse reseau (ex:192.168.0.0): "
set fin_addr=255
set /a nb_to_ping=nb_to_ping+255-debut_addr:~0,-2
set /a compteur_addr=0
echo Cr‚ation du fichier temporaire ...
echo %debut_addr:~0,-2%.%compteur_addr% >> %fichier_temporaire%
:Boucle
set /a compteur_addr=compteur_addr+1
echo %debut_addr:~0,-2%.%compteur_addr% >> %fichier_temporaire%
IF not %compteur_addr%==%fin_addr% GOTO BOUCLE
set /a nombre_reseau_to_scan=nombre_reseau_to_scan-1
IF not %nombre_reseau_to_scan%==0 GOTO MASTER

REM ***********************************************
REM *** Initialisation des fichiers de stockage ***
REM ***********************************************
echo ********************************************** >> %nom_fichier_ok%
echo **            				*** >> %nom_fichier_ok%
echo **  Fichier de reponses positives au ping	*** >> %nom_fichier_ok%
echo **            				*** >> %nom_fichier_ok%
echo ********************************************** >> %nom_fichier_ok%
echo. >> %nom_fichier_ok%
echo ********************************************** >> %nom_fichier_no%
echo **            			        *** >> %nom_fichier_no%
echo **  Fichier de reponses positives au ping  *** >> %nom_fichier_no%
echo **            			        *** >> %nom_fichier_no%
echo ********************************************** >> %nom_fichier_no%
echo. >> %nom_fichier_no%


REM ****************************************************************
REM *** Lecture du nom des machines dans le %fichier_temporaire% ***
REM ****************************************************************
ECHO *********** Debut des pings ***********
FOR /F %%i IN (temp.txt) Do call :INSTALLATION %%i
REM FOR /F %%i IN (%i) Do call :INSTALLATION %%i
ECHO *********** Fin des pings ***********
echo.
set /a nombre_reponses=nombre_reponses_ok+nombre_reponses_no
echo *** %nombre_reponses% reponse sur un total de %nb_to_ping% adresses
echo *** %nombre_reponses_ok% reponses positives
echo *** %nombre_reponses_no% reponses negatives
DEL /F /Q %fichier_temporaire%
echo. >> %nom_fichier_ok%
echo. >> %nom_fichier_no%
ECHO *********** Fin des pings *********** >> %nom_fichier_ok%
ECHO *********** Fin des pings *********** >> %nom_fichier_no%
echo *** %nombre_reponses% reponse sur un total de %nb_to_ping% adresses >> %nom_fichier_ok%
echo *** %nombre_reponses% reponse sur un total de %nb_to_ping% adresses >> %nom_fichier_no%
echo *** %nombre_reponses_ok% reponses positives >> %nom_fichier_ok%
echo *** %nombre_reponses_no% reponses negatives >> %nom_fichier_no%
ATTRIB +R %nom_fichier_ok%
ATTRIB +R %nom_fichier_no%
PAUSE
GOTO FIN

:INSTALLATION
SET Machine=%1
SET Compteur=0

REM *************************************
REM *** Execution de la commande ping ***
REM *************************************
FOR /F  "tokens=1" %%i IN ('ping  %Machine% -n 1') DO call :TestPing %%i
GOTO TestPingSuite

REM Teste si les mot Réponse et Hôte sont contenu dans les lignes générées par la commande ping comme premier mot.
REM Si oui, alors on incremente le compteur Compteur
:TestPing
set ChainePing=%1
IF %ChainePing%Chaine==D‚laiChaine set /a Compteur=%Compteur%+1 
IF %ChainePing%Chaine==H“teChaine set /a Compteur=%Compteur%+1
GOTO FIN

REM A la fin du for /F on entre dans ce test. Si le compteur est toujours à 0 c'est qu aucune 
REM ligne générée par le ping ne contenait les mots Hôte et Délai comme premier mot.
:TestPingSuite
if %Compteur%==0 GOTO PingOK
GOTO NoPing

REM ************************
REM *** Procedure NoPing ***
REM ************************
:NoPing
REM ****** Il y a eu un probleme sur le ping de la machine %Machine
set /a nombre_reponses_no=nombre_reponses_no+1
ECHO *** Ping ERROR sur %Machine% 
ECHO *** Ping ERROR sur %Machine% >> %nom_fichier_no%
GOTO FIN

REM ************************
REM *** Procedure PingOK ***
REM ************************
:PingOK
REM ****** PingOK sur la machine %Machine%
set /a nombre_reponses_ok=nombre_reponses_ok+1
ECHO *** Ping   OK  sur %Machine%
ECHO *** Ping   OK  sur %Machine% >> %nom_fichier_ok%
GOTO FIN


:FIN
A voir également:

1 réponse

christboy Messages postés 157 Date d'inscription jeudi 31 mai 2007 Statut Membre Dernière intervention 30 juillet 2008 20
1 juin 2007 à 08:31
oups une erreur de copier coller, j'ai pris un fichier qui n'était pas finit, prenez plutot celui la
ECHO OFF
cls
REM *********************************************************
REM **  Test de ping sur une liste de machines            ***
REM **            					  ***
REM *********************************************************

set /p nombre_reseau_to_scan="nombre de reseau a scanner : "

REM *************************************************
REM *** Création du nom des fichier de destination ***
REM *************************************************
set heure=%time:~0,8%
set fichier_temporaire="temp.txt"
set nom_fichier_ok="reponses_ok  [%date:/=-%] [%heure::=.%].txt"
set nom_fichier_no="reponses_no  [%date:/=-%] [%heure::=.%].txt"
set /a nombre_reponses_ok=0
set /a nombre_reponses_no=0

REM *************************************
REM *** Création du fichier d'adresse ***
REM *************************************

echo.> %fichier_temporaire%
set /a nb_to_ping=0
:MASTER
set /p debut_addr="saisir l'adrresse reseau (ex:192.168.0.0): "
set fin_addr=255
set /a compteur_addr=0
echo Cr‚ation du fichier temporaire ...
:Boucle
echo %debut_addr:~0,-2%.%compteur_addr% >> %fichier_temporaire%
set /a compteur_addr=compteur_addr+1
set /a nb_to_ping=nb_to_ping+1
IF not %compteur_addr%==%fin_addr% GOTO BOUCLE
set /a nombre_reseau_to_scan=nombre_reseau_to_scan-1
IF not %nombre_reseau_to_scan%==0 GOTO MASTER

REM ***********************************************
REM *** Initialisation des fichiers de stockage ***
REM ***********************************************
echo ****************************************************** >> %nom_fichier_ok%
echo **                                                 *** >> %nom_fichier_ok%
echo **  Fichier de reponses positives au ping          *** >> %nom_fichier_ok%
echo **                                                 *** >> %nom_fichier_ok%
echo ****************************************************** >> %nom_fichier_ok%
echo. >> %nom_fichier_ok%
echo ******************************************************* >> %nom_fichier_no%
echo **                                                  *** >> %nom_fichier_no%
echo **  Fichier de reponses positives au ping           *** >> %nom_fichier_no%
echo **                                                  *** >> %nom_fichier_no%
echo ******************************************************* >> %nom_fichier_no%
echo. >> %nom_fichier_no%


REM ****************************************************************
REM *** Lecture du nom des machines dans le %fichier_temporaire% ***
REM ****************************************************************
ECHO *********** Debut des pings ***********
FOR /F %%i IN (temp.txt) Do call :INSTALLATION %%i
REM FOR /F %%i IN (%i) Do call :INSTALLATION %%i
ECHO *********** Fin des pings ***********
echo.
set /a nombre_reponses=nombre_reponses_ok+nombre_reponses_no
echo *** %nombre_reponses% reponse sur un total de %nb_to_ping% adresses
echo *** %nombre_reponses_ok% reponses positives
echo *** %nombre_reponses_no% reponses negatives
DEL /F /Q %fichier_temporaire%
echo. >> %nom_fichier_ok%
echo. >> %nom_fichier_no%
ECHO *********** Fin des pings *********** >> %nom_fichier_ok%
ECHO *********** Fin des pings *********** >> %nom_fichier_no%
echo *** %nombre_reponses% reponse sur un total de %nb_to_ping% adresses >> %nom_fichier_ok%
echo *** %nombre_reponses% reponse sur un total de %nb_to_ping% adresses >> %nom_fichier_no%
echo *** %nombre_reponses_ok% reponses positives >> %nom_fichier_ok%
echo *** %nombre_reponses_no% reponses negatives >> %nom_fichier_no%
ATTRIB +R %nom_fichier_ok%
ATTRIB +R %nom_fichier_no%
PAUSE
GOTO FIN

:INSTALLATION
SET Machine=%1
SET Compteur=0

REM *************************************
REM *** Execution de la commande ping ***
REM *************************************
FOR /F  "tokens=1" %%i IN ('ping  %Machine% -n 1') DO call :TestPing %%i
GOTO TestPingSuite

REM Teste si les mot Réponse et Hôte sont contenu dans les lignes générées par la commande ping comme premier mot.
REM Si oui, alors on incremente le compteur Compteur
:TestPing
set ChainePing=%1
IF %ChainePing%Chaine==D‚laiChaine set /a Compteur=%Compteur%+1 
IF %ChainePing%Chaine==H“teChaine set /a Compteur=%Compteur%+1
GOTO FIN

REM A la fin du for /F on entre dans ce test. Si le compteur est toujours à 0 c'est qu aucune 
REM ligne générée par le ping ne contenait les mots Hôte et Délai comme premier mot.
:TestPingSuite
if %Compteur%==0 GOTO PingOK
GOTO NoPing

REM ************************
REM *** Procedure NoPing ***
REM ************************
:NoPing
REM ****** Il y a eu un probleme sur le ping de la machine %Machine
set /a nombre_reponses_no=nombre_reponses_no+1
ECHO *** Ping ERROR sur %Machine% 
ECHO *** Ping ERROR sur %Machine% >> %nom_fichier_no%
GOTO FIN

REM ************************
REM *** Procedure PingOK ***
REM ************************
:PingOK
REM ****** PingOK sur la machine %Machine%
set /a nombre_reponses_ok=nombre_reponses_ok+1
ECHO *** Ping   OK  sur %Machine%
ECHO *** Ping   OK  sur %Machine% >> %nom_fichier_ok%
GOTO FIN


:FIN
0