rss
Rechercher : dans
Par : Pertinence Date Nom d'utilisateur
Statut : Non résolu

[BATCH] problème avec un programme de ping

Posté par christboy, le vendredi 1 juin 2007 à 16:09:26
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="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

Configuration: Windows 2000
Firefox 2.0.0.4
Répondre à christboy  Signaler ce message aux modérateurs Aller au dernier message

1


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Edouard, le vendredi 1 juin 2007 à 16:16:03
Les fichiers temporaires c'est pas grave, tu as qu'a le supprimer à la fin de ton batch
Répondre à Edouard

2


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
christboy, le vendredi 1 juin 2007 à 16:28:13
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.
Répondre à christboy

3


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
pcv_only/, le vendredi 1 juin 2007 à 16:44:19
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/
Répondre à pcv_only/

4


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
christboy, le lundi 4 juin 2007 à 15:45:39
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 ^^'
Répondre à christboy

5


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
pcv_only/, le lundi 4 juin 2007 à 16:45:05
Dans ce cas il faut faire un fichier d'initialisation et non pas un fichier temporaire...
Répondre à pcv_only/

6


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
 pcv_only/, le lundi 4 juin 2007 à 16:54:13
En plus, comme ton batch semble concerner des machines du réseau LAN, tu n'as besoin ni de l'un ni de l'autre...
Répondre à pcv_only/
Logiciels pertinents trouvés dans les téléchargements
Télécharger progeCAD 2008 2008 SmartprogeCAD 2008 - Vous recherchez une solution gratuite afin de vous familiariser avec le domaine du CAD ? Ce logiciel est fait pour vous....Catégorie: 3D
Licence: Freeware/gratuit
Télécharger PSPad 4.5.2PSPad - PSPad est un excellent éditeur de texte. Il est utile pour travailler sur du simple texte, mais aussi sur du HTML, CSS,...Catégorie: Développement
Licence: Freeware/gratuit
Télécharger MuseTools 2.11MuseTools - MuseTools a pour but de faciliter la vie des utilisateurs de MPC (MusePack), qualitativement parlant le meilleur format de...Catégorie: Conversion audio
Licence: Freeware/gratuit
Télécharger uTorrent 1.7.7uTorrent - µTorrent est un client BitTorrent , c'est-à-dire un logiciel de téléchargement Peer-To-Peer (P2P) capable de gérer les...Catégorie: Téléchargement
Licence: Freeware/gratuit
Plus de logiciels gratuits sur « [BATCH] problème avec un programme de ping »