3 votes

Comment déplacer tous les fichiers, sauf le plus récent, dans un dossier ?

Je dispose d'une boîte Windows et d'un dossier contenant de tels fichiers :

2010-07-04  20:18                81 in01_Acct_20100704001.r 
2010-07-07  05:45               165 in01_Acct_20100706001.r 
2010-07-07  19:41                82 in01_Acct_20100707001.r 
2010-07-07  10:02                81 in01_Acct_20100707002.r 
2010-07-08  08:31                89 in01_Acct_20100708001.r 
2010-07-10  04:51                82 in01_Acct_20100709001.r 

Je souhaite utiliser un lot pour déplacer périodiquement tous ces fichiers vers un autre dossier, à l'exception du plus récent (c'est-à-dire in01_Acct_20100709001.r), car ce fichier est parfois encore en cours d'écriture et son déplacement pourrait entraîner une substitution de fichier dans le dossier de destination lors de l'exécution suivante du lot, ce qui entraînerait la perte du contenu du fichier.

Toute idée concernant ce cas serait grandement appréciée.

1voto

Mike Fiedler Points 2132

Je poste ici la réponse de Suyao :

for /F "skip=1" %f IN ('dir /TW /O-D /A-D /B') DO move %f wherever

L'explication est simple : la commande DIR contient un tri de dates préétabli.

/T (has W implied would work as well) sorts based on time Last Written
/O sets the order, -D = By Date/Time, in reverse order
/A-D only entries that are NOT directories (hence files)
/B returns simply the filename

Le "skip=1" signifie que le code doit ignorer la première ligne renvoyée, et comme les fichiers ont été classés correctement, il s'agit du fichier le plus récent.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X