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 :

Récupérer variable sortie sous MS-DOS


Sujet :

Scripts/Batch

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 45
    Points : 58
    Points
    58
    Par défaut Récupérer variable sortie sous MS-DOS
    Bonjour à tous,

    Pour vous situez dans mon contexte, j'utilise cwRsync actuellement afin de faire de la sauvegarde de fichier. Pour celà, je l'éxecute en mode commande mais pour des raisons bien évidentes, je dois contrôler l'état de chaque fichier transféré.

    Rsync se charge de retourner à la fin de son execution une variable de sortie qui dépends de l'état de l'avancement du fichier. Pourriez-vous m'indiquer comment récupérer cette valeur ?

    Sous Linux il me semble que : var=$(commande) permet de la récupéré mais je n'ai pas trouvé d'infos sous MS-Dos.

    Merci.

  2. #2
    Membre émérite Avatar de Drizzt [Drone38]
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Mai 2004
    Messages
    1 001
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur de projet

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 001
    Points : 2 453
    Points
    2 453
    Par défaut
    Plusieurs choix selon l'utilisation.

    Soit tu utilises commande | pour rediriger la sortie vers une autre commande.
    Soit tu utilises commande > nom_fichier pour rediriger dans un fichier puis set /p nom_var=<nom_fichier

    Si c'est juste un code retour, la variable %ERRORLEVEL% peut être utilisée.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 45
    Points : 58
    Points
    58
    Par défaut
    Salut Drizzt [Drone38]

    Je te remercie de ta réponse. Effectivement, la variable %errorlevel% convient parfaitement à mon besoin.

    Merci de ta réponse rapide et de ton efficacité

  4. #4
    Débutant  
    Avatar de koKoTis
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 438
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 438
    Points : 2 415
    Points
    2 415
    Par défaut
    Citation Envoyé par 'Drizzt [Drone38
    Soit tu utilises commande | pour rediriger la sortie vers une autre commande.
    Soit tu utilises commande > nom_fichier pour rediriger dans un fichier puis set /p nom_var=<nom_fichier
    Je ne compren pas pourquoi tu rajoute un set /P ?

    Je pensse que se qui veut savoir c'est comment on utilise une variable, on l'entoure de % comme ca:
    pour afficher le contenu de la variable:
    Pour tester la variable:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if %variable%==ok ( 
       echo ok
    ) else (
      echo sauvegare échoué
    )

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 45
    Points : 58
    Points
    58
    Par défaut
    Citation Envoyé par koKoTis Voir le message
    Je pensse que se qui veut savoir c'est comment on utilise une variable
    Nop ça n'était pas le but de mon post mais je te remercie quand même. Mon problème était tout simplement de savoir où était situé le 'code retour' lors de la fin d'éxecution d'un programme (il retourne 0 si c'est OK, 1 si erreur syntaxe etc..)

    %ERRORLEVEL% convient parfaitement à mes attentes

    Merci quand même.

  6. #6
    Nouveau membre du Club
    Profil pro
    Consultant informatique
    Inscrit en
    Novembre 2007
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 32
    Points : 32
    Points
    32
    Par défaut Réponse plus précise par rapport au titre du sujet
    Pour répondre de manière plus précise par rapport au titre du sujet et contenter ceux qui arriveraient ici,
    j'utilise le FOR pour récupérer la sortie d'une commande et pouvoir traiter en conséquence.
    En tous ca, c'est préférable que passer par un fichier (source d'erreur s'il existe déjà...)

    cet exemple tiré d'un script que j'ai mis au point permettant de traiter différents cas après une commande de copie
    si je me contente de la variable %errorlevel% , je n'ai pas la précision voulue.

    Je vous laisse le soin de remplir les variables (qui pourraient manquer) comme il se doit (chemins de répertoires...)

    toutes les variables commence par maj_
    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    rem fichier de journalisation 1 
    set maj_logmaj=c:\j1.txt
    rem fichier de journalisation 2 au "format excel"
    set maj_fichierlog=c:\j2.csv
    
    rem initialisation de ma variable de retour
    set maj_retour=_
    rem plusieurs commandes de copie de fichiers
    call :retcom "%maj_prov%fichierTXT.txt" "%maj_applibur%"
    call :retcom "\\serv1\IMPI24\fichierBD.mdb" "%maj_appliloc%"
    
    rem remplir le fichier de journalisation 1 (%maj_logmaj%)
    if "%maj_retour%"=="_" (
    	echo "%time% Copies terminees avec succes">>"%maj_logmaj%"
    ) else (
    	rem echo %retour:~0,-1%>> "%maj_fichierlog%"
    	echo "%time% ERREUR constatee !">>"%maj_logmaj%"
    )
    rem remplir le fichier de journalisation 2 (%maj_fichierlog%)
    echo MaJ au boot;%COMPUTERNAME%;%USERNAME%;%date%;%time%;%maj_retour:~0,-1%>> "%maj_fichierlog%"
    rem SORTIE du script
    goto :eof
    
    rem "sous-programme"
    :retcom
    	set maj_cc=%1
    rem  ************************************************
    rem  ** recupere le retour de la commande de copie **
    rem  ************************************************
    	FOR /F "delims=" %%i IN ('copy /y %1 %2') DO set maj_aa=%%i
    rem supprime les espaces
    	set maj_aa=%maj_aa: =%
    rem ne garde que le premier caractere
    	set maj_aa=%maj_aa:~0,1%
    	if "%maj_aa%"=="1" (
    rem retour :         1 fichier(s) copié(s).
    rem copie ok
    		set maj_retr=_
    	) else (
    		if "%maj_aa%"=="0" (
    rem retour :         0 fichier(s) copié(s).
    rem 0 fichier copié
    rem dossier absent
    			set maj_retr=dossier absent pour %~nx1 _
    		) else (
    rem retour :         0 fichier(s) copié(s).
    rem retour : Le chemin d'accès spécifié est introuvable.
    rem je ne conserve que la dernière ligne de cette manière
    rem fichier absent
    			set maj_retr=fichier %~nx1 absent ! _
    		)
    	)
    	set maj_retour=%maj_retour:~0,-1%%maj_retr%
    rem SORTIE du "sous-programme"
    goto :eof

  7. #7
    Débutant  
    Avatar de koKoTis
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 438
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 438
    Points : 2 415
    Points
    2 415
    Par défaut
    Citation Envoyé par FreddyONE73 Voir le message
    En tous ca, c'est préférable que passer par un fichier (source d'erreur s'il
    Tu pêut tester s'il existe déjà et le supprimer avec del, non ?

  8. #8
    Nouveau membre du Club
    Profil pro
    Consultant informatique
    Inscrit en
    Novembre 2007
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 32
    Points : 32
    Points
    32
    Par défaut
    bien sûr koKoTis mais il y aurait d'autre cas à traiter (un autre script avec le même nom de variable...)
    les "..." signifiant d'autres cas non énumérés !

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

Discussions similaires

  1. Récupérer variable POST sous Flex
    Par MrJack14 dans le forum Flex
    Réponses: 3
    Dernier message: 18/02/2010, 16h50
  2. Réponses: 9
    Dernier message: 31/01/2010, 23h27
  3. comment récupérer des données sous DOS
    Par ad44dz dans le forum Ordinateurs
    Réponses: 1
    Dernier message: 06/11/2006, 15h29
  4. [C#] Récupérer la sortie d'un programme DOS
    Par olivier_23 dans le forum Windows Forms
    Réponses: 7
    Dernier message: 12/08/2006, 13h54

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