IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Scripts/Batch Discussion :

acceder à des repertoires distants dont les IP sont dans un fichier txt [Batch]


Sujet :

Scripts/Batch

  1. #1
    Candidat au Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mars 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Mars 2014
    Messages : 6
    Points : 4
    Points
    4
    Par défaut acceder à des repertoires distants dont les IP sont dans un fichier txt
    Bonjour,
    dans l'entreprise dans laquelle je suis actuellement nous possédons un logiciel qui est installé sur chaque poste et qui compte le nombre feuille imprimée dans la journée depuis celui ci. Ce compteur est inscrit dans un fichier txt dans le dossier du logiciel. Je souhaiterais récupérer se compteur afin de remplir un fichier avec le Hostname d'un coté et le compteur de l'autre. Voici le code que j'ai produit jusqu'à présent :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    SET FichierAllTime=\logs\sheet-count-all-time.txt
    SET Chemin32=\c$\Program Files
    SET Chemin64=\c$\Program Files (x86)
    SET FichierIP=IP.txt
    SET FichierDump=dump.txt
    
    ECHO NOM PC ; ADRESSE IP; NB TOTAL >  %DATE:~0,2%_%DATE:~3,2%_%DATE:~6,4%.txt
    
    FOR /f "delims=" %%a IN ('TYPE %FichierIP%') DO (
    	SET /p IPTarget=%%a 
    	ECHO %IPTarget%
    	FOR /f "tokens=6 delims= " %%a IN ('PING -a -n 1 %IPTarget%') DO (
    		SET hostname=%%a
    	)
    
    	IF EXIST \\%IPTarget%%Chemin32%%FichierAllTime%" (
    		TYPE "\\%IPTarget%%Chemin32%%FichierAllTime%" > %FichierDump%
    		SET /p VarTotal= < %FichierDump% 
    		DEL %FichierDump%
    		ECHO %hostname%;%IPTarget%;%VarTotal% >> %DATE:~0,2%_%DATE:~3,2%_%DATE:~6,4%.txt
    	
    	) 
    	IF EXIST "\\%IPTarget%%Chemin64%%FichierAllTime%" (
    		TYPE "\\%IPTarget%%Chemin64%%FichierAllTime%" > %FichierDump%
    		SET /p VarTotal= < %FichierDump% 
    		DEL %FichierDump%
    		ECHO %hostname%;%IPTarget%;%VarTotal% >> %DATE:~0,2%_%DATE:~3,2%_%DATE:~6,4%.txt
    	
    	) ELSE ECHO pas de fichier
    )
    Or malgres tout mes efforts,celui ne fonctionne pas. en effet la variable IPTarget prend bien la bonne valeur mais elle n'apparait pas dans le deuxième FOR.
    Je ne comprend pas pourquoi cela se produit. Avez vous une idée?

  2. #2
    Membre éclairé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2012
    Messages
    359
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 359
    Points : 738
    Points
    738
    Billets dans le blog
    2
    Par défaut
    l'expansion retardée des variables

    Code bat : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    setlocal enabledelayedexpansion
     
    SET FichierAllTime=\logs\sheet-count-all-time.txt
    SET Chemin32=\c$\Program Files
    SET Chemin64=\c$\Program Files (x86)
    SET FichierIP=IP.txt
    SET FichierDump=dump.txt
     
    ECHO NOM PC ; ADRESSE IP; NB TOTAL >  %DATE:~0,2%_%DATE:~3,2%_%DATE:~6,4%.txt
     
    FOR /f "delims=" %%a IN ('TYPE %FichierIP%') DO (
    	SET /p IPTarget=%%a 
    	ECHO !IPTarget!
    	FOR /f "tokens=6 delims= " %%a IN ('PING -a -n 1 !IPTarget!') DO (
    		SET hostname=%%a
    	)
     
    	IF EXIST \\!IPTarget!%Chemin32%%FichierAllTime%" (
    		TYPE "\\!IPTarget!%Chemin32%%FichierAllTime%" > %FichierDump%
    		SET /p VarTotal= < %FichierDump% 
    		DEL %FichierDump%
    		ECHO %hostname%;!IPTarget!;%VarTotal% >> %DATE:~0,2%_%DATE:~3,2%_%DATE:~6,4%.txt
     
    	) 
    	IF EXIST "\\!IPTarget!%Chemin64%%FichierAllTime%" (
    		TYPE "\\%IPTarget%%Chemin64%%FichierAllTime%" > %FichierDump%
    		SET /p VarTotal= < %FichierDump% 
    		DEL %FichierDump%
    		ECHO %hostname%;!IPTarget!;%VarTotal% >> %DATE:~0,2%_%DATE:~3,2%_%DATE:~6,4%.txt
     
    	) ELSE ECHO pas de fichier
    )

    mais je suis vraiment pas sûr de ton script dans son ensemble, regarde du côté de la commande "runas".
    Le gourou dicte la ligne (de commande) à suivre ...

    Penser à lire le Tutoriel Batch ou a consulter la FAQ Batch et ses contributions,
    ainsi que le Cour sur la ligne de commande et des scripts

  3. #3
    Candidat au Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mars 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Mars 2014
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    Merci de ta réponse.
    J'ai déjà prévu un runas. Pour la phase de recette je le fais avec la touche alt+clic droit et exécuter en tant que.

  4. #4
    Candidat au Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mars 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Mars 2014
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    Cela n'a malheureusement pas résolu mon problème.
    Le script continue de ne pas vouloir mettre %%a dans la variable IPTarget, à la place il y met Commande ECHO activée..
    Ce que je ne comprend pas c'est que la commande ECHO situé juste au dessus fait bien se qu'on lui demande.

    Avez vous une idée sur ce qui causerait ce probleme?

  5. #5
    Membre éclairé Avatar de bstevy
    Homme Profil pro
    Solutions Architect
    Inscrit en
    Mai 2009
    Messages
    552
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Japon

    Informations professionnelles :
    Activité : Solutions Architect
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2009
    Messages : 552
    Points : 870
    Points
    870
    Par défaut
    J'ai une petite idée.

    Si echo affiche "Commande ECHO activée" ca veut dire qu'il est passé sans paramètre, ce qui nous amène à dire que !IPTarget! est valorié à vide, et que donc %%a est lui-même vide...

    Autrement dit, tu n'aurais pas des lignes vides dans 'TYPE %FichierIP%' ?
    Vu que tu n'utilises aucun délimiteur, c'est la seul raison je pense...

  6. #6
    Candidat au Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mars 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Mars 2014
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    merci de ta reponse rapide.
    lorsque je rajoute la ligne de test
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SET /p IPTarget=%%a 
    ECHO !IPTarget! > %%a.txt
    Il écrie Commande ECHO activée. dans un fichier portant comme nom l'adresse IP.
    Et ca pour chaque adresse de mon fichier IP.txt.

    Donc %%a prend bien une valeur correcte mais pas IPTarget.
    Ce qui est affiché dans la console:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SET /p IPTarget=172.24.10.123
     ECHO !IPTarget!  1>172.24.10.123.txt

  7. #7
    Membre éclairé Avatar de bstevy
    Homme Profil pro
    Solutions Architect
    Inscrit en
    Mai 2009
    Messages
    552
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Japon

    Informations professionnelles :
    Activité : Solutions Architect
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2009
    Messages : 552
    Points : 870
    Points
    870
    Par défaut
    et sans le /p ?

    The /P switch allows you to set a variable equal to a line of input entered by the user.
    The Prompt string is displayed before the user input is read.

  8. #8
    Candidat au Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mars 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Mars 2014
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    Super.
    merci, mon probleme est resolu, c'etait bien le /p qui posais problème.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] Sélection des lignes dont les associations sont dans une certaines liste
    Par collect dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 15/01/2015, 23h09
  2. Réponses: 2
    Dernier message: 22/01/2012, 16h29
  3. Réponses: 6
    Dernier message: 10/11/2011, 15h50
  4. modifier des tables dont les noms sont dans une autre
    Par lapin_did dans le forum Requêtes
    Réponses: 1
    Dernier message: 06/09/2010, 10h45
  5. Réponses: 0
    Dernier message: 06/02/2008, 18h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo