Page 1 sur 1

Batch avec Robocopy, probléme de log

Posté : 26 oct. 2010 18:41
par fresh
Bonjour à tous,

voila mon soucis:
j'ai fait un script pour copier le contenu d'un dossier dans un autre. le but étant de ne prendre que les fichiers ne contenant pas la chaine de caractères "NOCOP" et d'écrire un compte rendu dans un fichier de log.
le script est exécuté toutes les 30 min et forcément la log ne doit être remplie que lorsque quelque chose est copié.

Code : Tout sélectionner

ROBOCOPY source/ destination/ /xO /XF NOCOP  /LOG+:log.txt /NJS /NJH /TS /NDL /NC /NS /NP

mon problème est que lorsqu'il s'exécute et ne copie rien, il écrit quand même un retour chariot dans le fichier log.
à force je me retrouve donc avec des grands espaces entre chaque log.

Quelqu'un aurait-il une idée pour écrire dans la log uniquement lorsqu'une copie est effectuée?

merci à vous.

fresh

Re: Batch avec Robocopy, probléme de log

Posté : 27 oct. 2010 16:39
par DarkBatcher
hello,

ce sera peut être pas très rapide si le fichier contient plusieurs milliers de lignes, mais le plus simple c'est de parser le log avec la commande for. Il faut mettre le code à la fin du batch pour que les espaces soient supprimé, ou tout simplement le mettre dans un batch séparé et le lancer à la fin de la journée (ça permettra de parser tout en en seule fois)

Code : Tout sélectionner

IF EXIST log.tmp DEL log.tmp
REM on supprime le fichier log.tmp  s'il existe
REM la commande for ne lit pas les lignes vides
FOR /f "tokens=*" %%A IN (log.txt) DO (
ECHO %%A>>log.tmp
)
REM le fichier log.tmp ne contient pas de saut de lignes
IF EXIST log.txt DEL log.txt
REM on supprime le fichier log.txt
REN log.tmp log.txt
REM on renomme le fichier log.tmp en log.txt
normalement ça doit marcher :D

bonne journée