Connaître le nombre de fichiers copiés par la commande xcopy
Résolu
Krisantem32
Messages postés
7
Date d'inscription
Statut
Membre
Dernière intervention
-
Krisantem32 Messages postés 7 Date d'inscription Statut Membre Dernière intervention -
Krisantem32 Messages postés 7 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'ai crée un programme batch afin de chercher les fichiers .xls dans les sous-dossiers de l'utilisateur courant et de les copier sur un emplacement réseau. Je veux savoir combien de fichiers ont été copié.
Quand xcopy copie 1 fichier, il affiche 1 fichier(s) copi'(s) (ou 0 fichier(s) copi'(s) si le fichier n'a pas été copié parce qu'il est déjà présent sur l'emplacement de sauvegarde). Mais il affiche cela pour chaque fichier, sans faire le total.
Donc j'ai choisi de récupérer ce résultat (1 fichier(s) copi'(s)) dans un fichier texte, puis de lire ce fichier texte (notamment le premier caractère qui est le chiffre 0 ou 1) afin d'incrémenter une variable en lui additionnant ce chiffre et ainsi de connaître le nombre de fichiers copiés.
Mais l'addition ne se fait pas et je soupçonne que ça génère un code d'erreur.
Voile le code :
Pourriez-vous me dire comment je peux faire pour connaître le nombre de fichiers copiés ?
J'ai crée un programme batch afin de chercher les fichiers .xls dans les sous-dossiers de l'utilisateur courant et de les copier sur un emplacement réseau. Je veux savoir combien de fichiers ont été copié.
Quand xcopy copie 1 fichier, il affiche 1 fichier(s) copi'(s) (ou 0 fichier(s) copi'(s) si le fichier n'a pas été copié parce qu'il est déjà présent sur l'emplacement de sauvegarde). Mais il affiche cela pour chaque fichier, sans faire le total.
Donc j'ai choisi de récupérer ce résultat (1 fichier(s) copi'(s)) dans un fichier texte, puis de lire ce fichier texte (notamment le premier caractère qui est le chiffre 0 ou 1) afin d'incrémenter une variable en lui additionnant ce chiffre et ainsi de connaître le nombre de fichiers copiés.
Mais l'addition ne se fait pas et je soupçonne que ça génère un code d'erreur.
Voile le code :
@echo off
cls
Set savepath="\\ASPIRE_9500\Partage Acer Aspire 9500\Test"
Set /a j=0
for /R %USERPROFILE% %%a in (*.xls) do (
xcopy "%%a" %savepath% /D /C /Q /Y > savelog.txt
FOR /F %%i IN (savelog.txt) DO SET /A j=%%i+%j%
if not errorlevel 1 goto Erreur
)
del savelog.txt
echo.
if %j% == 0 (Echo Aucun fichier n'a ,t, copi, sur le NAS) else (
if %j% == 1 (Echo 1 fichier a bien ,t, copi, avec succSs sur le NAS) else (
Echo %j% fichiers ont bien ,t, copi,s avec succSs sur le NAS))
echo.
Pause
Exit
:Erreur
del savelog.txt
echo.
Echo Il y a eu une erreur lors de la copie sur le NAS.
echo.
Pause
Pourriez-vous me dire comment je peux faire pour connaître le nombre de fichiers copiés ?
3 réponses
hello
pour modifier une variable dans une boucle FOR, il faut utiliser setlocal enableDelayedExpansion et ! à la place de %
donc:
pour modifier une variable dans une boucle FOR, il faut utiliser setlocal enableDelayedExpansion et ! à la place de %
donc:
setlocal enableDelayedExpansion
Set /a j=0
...
...
FOR /F %%i IN (savelog.txt) DO SET /A j=%%i+!j!
...
if !j! == 0 .....
etc
Bonsoir,
Merci beaucoup dubcek pour ta réponse.
Le programme fonctionne parfaitement (enfin sous Seven) car j'ai un problème sous XP, peut-être dans la boucle FOR.
En effet, la fenêtre de commande se ferme toute seule sans message d'erreur.
Donc, je vais essayer de m'en occuper ce weekend en l'exécutant pas à pas.
Bye.
Merci beaucoup dubcek pour ta réponse.
Le programme fonctionne parfaitement (enfin sous Seven) car j'ai un problème sous XP, peut-être dans la boucle FOR.
En effet, la fenêtre de commande se ferme toute seule sans message d'erreur.
Donc, je vais essayer de m'en occuper ce weekend en l'exécutant pas à pas.
Bye.
Bonjour,
J'ai trouvé d'où venait l'erreur qui provoquait la fermeture de la fenêtre sans message d'erreur. Il fallait mettre %USERPROFILE% entre guillemets ".
En effet, sous XP les fichiers de l'utilisateur courant se trouvent dans C://Documents and Settings/NomUtilisateur et ce chemin comporte au moins 2 espaces alors que sous Seven, le chemin est C://Users/NomUtilisateur et là, il n'y a pas d'espace.
Donc, cette fois-ci, tout semble fonctionner correctement.
Je vais encore re-vérifier pour être sûr que ce programme fonctionne sans plantage possible.
Merci encore pour ton aide dubcek.
Bye.
J'ai trouvé d'où venait l'erreur qui provoquait la fermeture de la fenêtre sans message d'erreur. Il fallait mettre %USERPROFILE% entre guillemets ".
En effet, sous XP les fichiers de l'utilisateur courant se trouvent dans C://Documents and Settings/NomUtilisateur et ce chemin comporte au moins 2 espaces alors que sous Seven, le chemin est C://Users/NomUtilisateur et là, il n'y a pas d'espace.
Donc, cette fois-ci, tout semble fonctionner correctement.
Je vais encore re-vérifier pour être sûr que ce programme fonctionne sans plantage possible.
Merci encore pour ton aide dubcek.
Bye.