Créer un fichier avec la date actuelle dans Nom de fichier + journalisation Robocopy

Ayant très peu d’expérience avec Batchfiles, les scripts et généralement le “codage”, j’ai rapidement rencontré un problème avec un lot que je voulais créer.

La situation est la suivante:

J’ai un dossier dans lequel les fichiers * .txt sont automatiquement insérés et je voulais déplacer ces fichiers vers différents dossiers en fonction des noms des fichiers. Je l’ai fait avec Robocopy et ça marche très bien. Puis j’ai découvert la possibilité de consigner ce que fait Robocopy. Le lot ressemble actuellement à ceci:

robocopy C:\Source C:\Target_Normal file*.txt /xf file022*.txt /mov /log+:LogNo.txt /ns /nc /np /r:1 /w:5 robocopy C:\Source C:\Target_Special file022*.txt /mov /log+:LogNo.txt /ns /nc /np /r:1 /w:3 

Ce lot doit faire partie d’une tâche planifiée Windows, qui doit exécuter chaque minute. Comme il y a beaucoup de fichiers à déplacer, le fichier journal sera bientôt très gonflé. J’ai maintenant besoin d’un fichier journal pour chaque jour, que le même lot crée automatiquement la première fois qu’il s’exécute un nouveau jour. Ce serait parfait si le nom du fichier journal nouvellement créé contenait la date de création, bien sûr. Je veux mettre tout cela au-dessus des lignes robocopy. En pseudocode, je voudrais avoir quelque chose comme ceci:

 If currentDay has no Logfile yet -> Create Logfile with Name Log+currentDate -> else (nothing and continue?) 

…Si cela a du sens. Je ne sais pas comment exprimer cela pour travailler dans un lot.

Ce lot montre comment obtenir la date réelle avec wmi et divise cette date en parties que vous pouvez assembler à votre convenance.

 @Echo off SetLocal EnableExtensions EnableDelayedExpansion :: Get Local date time for /f "tokens=1-3 delims=.+-" %%A in ( 'wmic os get LocalDateTime^|findstr ^^[0-9]' ) do Set _DT=%%A Set "_yy=%_DT:~0,4%" & Set "_MM=%_DT:~4,2%" & Set "_dd=%_DT:~6,2%" Set "_hh=%_DT:~8,2%" & Set "_nn=%_DT:~10,2%" & Set "_ss=%_DT:~12,2%" :: Put your date time elements together :: %_DT:~0,8% is yyyyMMdd Set LogNo=Log_%_DT:~0,8%.txt set _ Echo Logfile is : %LogNo% Pause robocopy C:\Source C:\Target_Normal file*.txt /xf file022*.txt /mov /log+:%LogNo% /ns /nc /np /r:1 /w:5 robocopy C:\Source C:\Target_Special file022*.txt /mov /log+:%LogNo% /ns /nc /np /r:1 /w:3