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.
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:
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 |