[BATCH] problème avec un programme de ping
christboy
Messages postés
157
Statut
Membre
-
pcv_only/ -
pcv_only/ -
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.
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="saisissez le nombre de r‚seau(x) … 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"
REM **************************************************
REM *** initialisation des variables ***
REM **************************************************
set /a nombre_reponses_ok=0
set /a nombre_reponses_no=0
set /a nb_to_ping=0
REM *************************************
REM *** Création du fichier d'adresse ***
REM *************************************
echo.> %fichier_temporaire%
:MASTER
echo saisir l'adresse r‚seau (ex:192.168.0.0):
echo (limite au r‚seau XXX.XXX.XXX.9)
set /p debut_addr=?
set debut_addr=%debut_addr:~0,-2%
set fin_addr=255
set /a compteur_addr=1
echo Cr‚ation du fichier temporaire ...
:Boucle
echo %debut_addr%.%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 réponses positives au ping *** >> %nom_fichier_ok%
echo ** *** >> %nom_fichier_ok%
echo ********************************************** >> %nom_fichier_ok%
echo. >> %nom_fichier_ok%
echo *********** D‚but des pings *********** >> %nom_fichier_ok%
echo ********************************************** >> %nom_fichier_no%
echo ** *** >> %nom_fichier_no%
echo ** Fichier de réponses positives au ping *** >> %nom_fichier_no%
echo ** *** >> %nom_fichier_no%
echo ********************************************** >> %nom_fichier_no%
echo. >> %nom_fichier_no%
echo *********** D‚but des pings *********** >> %nom_fichier_no%
REM ****************************************************************
REM *** Lecture du nom des machines dans le %fichier_temporaire% ***
REM ****************************************************************
ECHO *********** D‚but des pings ***********
FOR /F %%i IN (temp.txt) Do call :INSTALLATION %%i
ECHO ************ Fin des pings ************
REM ******************************************************************
REM *** Ecriture des statistiques dans les fichiers de destination ***
REM ******************************************************************
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% réponse sur un total de %nb_to_ping% adresses >> %nom_fichier_ok%
echo *** %nombre_reponses% réponse sur un total de %nb_to_ping% adresses >> %nom_fichier_no%
echo *** %nombre_reponses_ok% réponses positives >> %nom_fichier_ok%
echo *** %nombre_reponses_no% réponses negatives >> %nom_fichier_no%
REM **************************************************************
REM *** Mise en place des attribut des fichiers de destiantion ***
REM **************************************************************
ATTRIB +R %nom_fichier_ok%
ATTRIB +R %nom_fichier_no%
PAUSE
GOTO FIN
REM ******************************
REM *** Procedure INSTALLATION ***
REM ******************************
: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:
- [BATCH] problème avec un programme de ping
- Fichier batch - Guide
- Programme demarrage windows - Guide
- Mettre en veille un programme - Guide
- Cette action ne peut pas être réalisée car le fichier est ouvert dans un autre programme - Guide
- Forcer la fermeture d'un programme - Guide
6 réponses
oui mais le fichier est supprimé a la fin mais j'aimerai ne plus avir de fichier temporaire du tout ^^.
En fait je programme en C++ d'habitude j'aurais aimé savoir si en batch il existait des tableau ou quelque chose qui y ressemble car sa supprimerai ce fichier.
Mais merci de ta reponse quand meme.
En fait je programme en C++ d'habitude j'aurais aimé savoir si en batch il existait des tableau ou quelque chose qui y ressemble car sa supprimerai ce fichier.
Mais merci de ta reponse quand meme.
Salut
Non, pas de tableau en ligne de commande. Uniquement des variables "int" ou "String" via la commande SET. Aussi en batch tout est séquentiel. Tu peux éviter l'écriture du fichier temporaire, mais il faut complètement repenser ton fichier. Tu peux aussi en profiter pour le simplifier.
by pcv_only/
Non, pas de tableau en ligne de commande. Uniquement des variables "int" ou "String" via la commande SET. Aussi en batch tout est séquentiel. Tu peux éviter l'écriture du fichier temporaire, mais il faut complètement repenser ton fichier. Tu peux aussi en profiter pour le simplifier.
by pcv_only/
En fait, j'avais pris un fichier temporaire car je voulais que l'utilisateur entre toutes les infos au debut du programme et puisse le laisser faire seul ensuite. Donc le fichier temporaire pouvait stocker les adresses a pinger. Si je fais comme tu me conseil (càd de facon sequentielle pour chaque réseau) l'utilisateur serait obliger d'intervenir en cours de route, hors c'est ce que je veux eviter.
Mais bon comme apparament il n'y a rien pour stocker un ensemble de variable en batch, j'ai pas le choix : fichier temporaire ^^'
Mais bon comme apparament il n'y a rien pour stocker un ensemble de variable en batch, j'ai pas le choix : fichier temporaire ^^'
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question