web-dev-qa-db-fra.com

Commande par lots pour déplacer des fichiers vers un nouveau répertoire

Je veux écrire un travail par lots qui, une fois exécuté, saisira tous les fichiers du C:\Test\Log dossier et les déplacer vers un nouveau répertoire dans le C:\Test. Ce nouveau répertoire aura un nom appelé "Backup-" et DATE ACTUELLE.

Ainsi, une fois terminé, le dossier du journal doit être vide avec tous les fichiers maintenant situés dans le nouveau dossier.

Je sais que je devrais utiliser la commande MOVE, mais je ne sais pas comment créer dynamiquement un nouveau dossier et utiliser la date pour le nommer.

14
Gabriel

Quelque chose comme ça pourrait aider:

SET Today=%Date:~10,4%%Date:~4,2%%Date:~7,2%
mkdir C:\Test\Backup-%Today%
move C:\Test\Log\*.* C:\Test\Backup-%Today%\
SET Today=

La partie importante est la première ligne. Il prend la sortie de la valeur interne DATE et l'analyse dans une variable d'environnement nommée Today, au format CCYYMMDD, comme dans '20110407`.

Le %Date:~10,4% dit d'extraire une sous-chaîne * de la variable d'environnement Date 'Jeu 04/07/2011' (intégré - type echo %Date% à l'invite de commande) à partir de la position 10 pour 4 caractères (2011). Il concatène ensuite une autre sous-chaîne de Date: à partir de la position 4 pour 2 caractères (04), puis concatère deux caractères supplémentaires à partir de la position 7 (07).

* Les points de départ de la valeur de sous-chaîne sont basés sur 0.

Vous devrez peut-être ajuster ces valeurs en fonction du format de date dans votre région, mais cela devrait vous donner un point de départ.

31
Ken White

cela fonctionnera aussi, si vous le souhaitez

 xcopy  C:\Test\Log "c:\Test\Backup-%date:~4,2%-%date:~7,2%-%date:~10,4%_%time:~0,2%%time:~3,2%" /s /i
 del C:\Test\Log
0