Se connecter / S'enregistrer

Résolu Ajouter un timestamp avant l'extension d'un fichier

Solutions (3)
Tags :
  • Archive
  • Script
|
Bonjour,

J'ai plusieurs fichiers de différentes longueur et j'aimerais ajouter un timestamp à la fin du fichier (mais avant l'extension) et par la suite copier ces fichiers dans un répertoire archive. Voici mon code :

@echo off
SET mydate=%date:~2,2%%date:~5,2%%date:~8,2%
SET fichier=D:\test\*.*
FOR /f %%i IN ("%fichier%") DO (
SET filename=%%~ni
)
copy "D:\test\*.*" "D:\test\test\%filename%-%mydate%.txt"

Dans mon répertoire "test" j'ai actuellement 2 fichiers et quand j'exécute mon script j'obtiens ceci : -140513.txt

Pouvez-vous m'aider (je suis très débutant en script en passant...)

Merci
Contenus similaires
Meilleure solution
partage
|
Déjà, ton copy est dehors du for, alors qu'il te faut faire un copy par fichier (donc dans la boucle for).
Ensuite, le FOR /F si tu mets directement un fichier, il va lire son contenu (la boucle se faisant sur chaque ligne du ou des fichiers).
Si tu veux simplement lister les fichiers, soit tu fais directement sans le /F : FOR %%i in (D:\test\*.*) DO (
soit tu traites le retour de la commande DIR : FOR /F %%A IN (`DIR /B D:\test\*.* 2^>NUL`) DO (
  • Yannick100C a sélectionné cette solution comme la meilleure réponse
  • Yannick100C a voté pour cette réponse
  • Commenter cette solution |
Score
1
òh
òi
|
Comme le catch est tordu, je te donne le résultat.
Et comme je n'ai pas testé, j'ai mis des ECHO pour que tu vérifie avant de faire un copy. :) 
Et pense à activer l'expansion retardée (regarde dans CMD /HELP)
  1. for %%i in (D:\test\*.*) do (
  2. set filename=%%~ni
  3. set filenameSrc=D:\test\!filename!
  4. set filenameDst=D:\test\test\!filename:~0,-4!%mydate%!filename:~-4!
  5. echo !filename!
  6. echo !filenameSrc!
  7. echo !filenameDst!
  8. echo.
  9. )
  • Yannick100C a voté pour cette réponse
  • Commenter cette réponse |
Score
0
òh
òi
|
Oui c'est parce que tu utilises une variable d'environnement dans le FOR.
Soit tu ne fais pas de SET filename=..., et tu utilises directement %%i (à voir si ça fonctionne ou pas).
Soit tu gardes le SET, mais il te faut utiliser l'expansion retardée (DelayedExpansion) : tu utilises !filename! au lieu de %filename%
Pour activer l'expansion retardée, soit tu ajoutes un commutateur quand tu lances CMD /V, soit tu as une clé à modifier en base de registre (voir HELP CMD).
L'explication de l'expansion retardée est donnée en fin de HELP SET. En gros, c'est parce que le SET n'est exécuté qu'une fois en fin de commande si l'on utilise pas l'expansion retardée.
  • Commenter cette réponse |

Ce n'est pas ce que vous cherchiez ?

Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS