[BATCH] problème avec un programme de ping
christboy
Messages postés
157
Date d'inscription
Statut
Membre
Dernière intervention
-
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
- Port ping - Forum Windows
- 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