Fichier de commandes pour déplacer des fichiers par date de modification
J'ai écrit un fichier de commandes, ce qui crée des dossiers vides pour chaque date. Ma prochaine tâche est de créer un autre fichier de commandes, qui se déplace chaque fichier dans un répertoire, à la date pertinente dossier en fonction de leur date de modification. J'ai lu de nombreux forums et articles sur comment je peux réaliser cela, mais avec mon limitée fichier de commandes de connaissances, j'ai juste ne peut pas sembler obtenir que cela fonctionne. Le code que j'ai actuellement est indiqué ci-dessous, bien que cela ne semble pas tirer sur la date de modification. Toute aide est grandement appréciée!
SET directory="\directory\path\archive"
FOR /f %%a in ('dir /b "%directory%"') do (
SET fdate=%%~Ta
MOVE "%directory%\%%a" "%directory%\%fdate%"
Plus d'info est nécessaire - Comment sont vos dossiers de date formatée? Par exemple, j'utilise aaaa-mm-jj dans le dossier et les noms de fichier. Aussi, quelle est votre machine mise en place pour l'affichage des dates? La sortie de la commande DATE de répondre à la 2ème question. Par exemple, ma machine utilise jj/mm/aaaa format de date.
OriginalL'auteur tob88 | 2011-12-13
Vous devez vous connecter pour publier un commentaire.
Jusqu'à ce que vous fournir plus d'informations que pour le format des dates, je ne peux pas donner de réponse définitive. Mais je peux vous montrer comment j'allais le faire sur ma machine.
- Je utiliser aaaa-mm-jj dans les noms de fichier et dossier, de sorte que le 13 décembre 2011, serait 2011-12-13. Ma machine utilise jj/mm/aaaa format pour les dates (12/13/2011). Donc j'aurais besoin de traduire le %%~tF sortie de 12/13/2011 en 2011-12-13. Note -
/
ne peut pas être utilisé dans les noms de fichier ou dossier.Donc ce code permettrait de faire ce que vous voulez sur ma machine:
Additif - Question en commentaire demande pour la méthode à gauche pad un certain nombre de zéros pour dir création. Je vois deux choix facile. (Cela devrait vraiment être une autre question)
Cette première méthode est simple mais fastidieux et pas pratique comme une solution générale
La deuxième méthode est une solution générale. Depuis, votre projet est entre parenthèses, vous devez utiliser l'expansion retardée.
Vous augmentez le nombre de zéros en ajoutant plus 0 à l'avant et à l'augmentation du nombre de caractères que vous conservez dans la sous-chaîne de l'opération.
MAIS pourquoi préremplir les répertoires? Votre stratégie sera ajouter répertoire jours qui n'existent pas dans le calendrier, plus vous êtes susceptibles d'avoir de nombreux dossiers inutiles pour lesquels aucun dossier n'a été modifié à ce jour. Mieux pour créer les dossiers nécessaires. Puis le 0 de rembourrage est déjà fait pour vous, et pas inutiles dossiers sont créés.
Fait. Veuillez accepter la réponse si elle répond à votre question. Ne pas juste en haut de voter.
Cela a fonctionné à merveille. Je ne m'attendais pas à une telle réponse. Je souhaite avoir plus de upvotes à donner, je vous remercie beaucoup.
EDIT - je viens de me rappeler il n'y a pas besoin de faire explicitement les répertoires intermédiaires. Il travaille à faire directement au plus profond de répertoire et de tous les disparus répertoires intermédiaires sera fait ainsi. Le Code a été correctement mis à jour.
OriginalL'auteur dbenham