J'essaye de coder un fichier séquentiel pour ne copier que le dernier fichier daté dans un dossier donné vers un autre répertoire sur la machine locale, et de le renommer comme il le fait.Comment coder un fichier batch pour copier et renommer le fichier le plus récent?
J'ai trouvé une question similaire ici
How do I write a Windows batch script to copy the newest file from a directory?
et ont réussi à bricoler le code ci-dessous d'autres forums aussi, mais ont frappé un mur de briques comme il en résulte que dans le fichier batch lui-même étant copié dans le dossier de destination. Peu m'importe où le fichier de commandes se trouve pour que cela fonctionne.
Le dossier source est C:! BATCH et le dossier de destination est C: \ DROP
Le code est ci-dessous, excuses si c'est une réponse évidente, mais c'est littéralement la première incursion dans le codage des fichiers batch pour moi ... Merci!
@echo off
setLocal EnableDelayedExpansion
pushd C:\! BATCH
for /f "tokens=* delims= " %%G in ('dir/b/od') do (set newest=%%G)
copy "!newest!" C:\DROP\
PAUSE
Thankyou tellement, ça marche! Bien que la seule chose est qu'il ne renomme pas le fichier quand il se déplace. Malheureusement, pour des raisons qui sont trop longues pour entrer ici, le répertoire source devra garder le '!' dans son nom. Toutes les autres idées sur la façon d'avoir le script renommer simultanément le fichier seraient très appréciées! –
L'autre réponse récemment publiée a un bon moyen de renommer le fichier avec la commande de copie. belisarius a aussi un bon point que vous devriez explicitement désactiver l'expansion retardée avant d'appeler pushd, juste au cas où votre script est appelé avec une extension retardée déjà activée. – WildCrustacean