Ajouter date de modification à noms de fichiers par batch

Ajouter date de modification à noms de fichiers par batch - Win 7 - Windows & Software

Marsh Posté le 18-02-2019 à 18:39:02    

Bonjour,
y a-t-il un moyen d'ajouter la date (et l'heure) de modification de fichiers (par batch) à leur nom en ligne de commande ?
Donc je passerais par exemple de "fichier.pdf" à "fichier 18-02-2019 19h03.pdf"
J'ai trouvé ça concernant l'ajout de la date du jour mais j'ai besoin de la date de modification ;
https://www.clubic.com/forum/progra [...] page1.html
J'utilise Windows 7 pro 64b.
Merci.


Message édité par arnuche le 18-02-2019 à 18:47:18
Reply

Marsh Posté le 18-02-2019 à 18:39:02   

Reply

Marsh Posté le 19-02-2019 à 09:12:58    

un truc comme ça en powershell doit le faire

Code :
  1. get-childitem -File -Path C:\MonDossier |  ForEach-Object {$_ | Rename-Item -NewName {$_.Basename + '_' + ("{0:yyyy-MM-dd hh\hmm}" -f $_.LastWriteTime) + $_.Extension }}

Reply

Marsh Posté le 19-02-2019 à 09:49:12    

Merci beaucoup !
Le Powershell, on doit l'installer ou ça marchera simplement avec l'invite de commandes intégrée à Win7 ?
Et pour que je comprenne bien ta commande, comment Windows peut savoir que la partie {0:yyyy-MM-dd hh\hmm} correspond à la date de modification et pas de création ?

Reply

Marsh Posté le 19-02-2019 à 10:39:52    

arnuche a écrit :

Le Powershell, on doit l'installer ou ça marchera simplement avec l'invite de commandes intégrée à Win7 ?


PowerShell est intégré à Windows 7. Tu peux le trouver via le menu Démarrer.

 
arnuche a écrit :

Et pour que je comprenne bien ta commande, comment Windows peut savoir que la partie {0:yyyy-MM-dd hh\hmm} correspond à la date de modification et pas de création ?


Parce que juste après, il y a le paramètre

 
Citation :

-f $_.LastWriteTime


qui indique bien d’aller chercher la date de dernière modification (.LastWriteTime) et la rajouter à la suite du nom de fichier préexistant ($_). Tout est dit, dans la ligne de commande. Il faut juste savoir la lire (et c’est quelqu’un qui ne connaît rien à PowerShell qui dit ça, mais c’est la même chose avec d’autres shells).


Message édité par Trit' le 19-02-2019 à 10:41:40
Reply

Marsh Posté le 19-02-2019 à 10:44:16    

Juste, je cherchais le paramètre avant, j'ai lu un peu vite, merci.
Je vais tenter ça.

Reply

Marsh Posté le 19-02-2019 à 11:52:19    

Marche pas  :o , j'obtiens le message "Impossible de trouver un paramètre correspondant au nom « File »"  :??:
 
edit : ça marche si j'enlève -File  :)  
J'ai aussi enlevé un espace devant ForEach-Object et j'ai remplacé le underscore '_' par un espace ' '.
 
 
Par contre il remplace 20h49 par 08h49, y a-t-il moyen de garder 20h49 ?


Message édité par arnuche le 19-02-2019 à 12:00:09
Reply

Marsh Posté le 19-02-2019 à 12:32:58    

j'ai peut être une version trop récente de powershell c'est pour ça :D. JE voulais pas renommer les répertoires.
 
Pour mettre 20h49 exact faut mettre HH au lieu de hh et ça passe ;)

Reply

Marsh Posté le 19-02-2019 à 16:43:51    

Super, ça marche  :jap:  
 
Ça m'a donné une autre idée : est-ce qu'il y a moyen de récupérer de cette manière n'importe quel type de metadata et de l'utiliser pour le mettre dans le nom ?
Je pensais par exemple à : taille, type, hauteur de trame (pour les vidéos), auteur (pour les chansons) ..., bref, toute information que Windows peut afficher dans des colonnes à côté des fichiers.
Si oui, où trouver les termes à utiliser dans la ligne de commande pour remplacer LastWriteTime (ou rajouter derrière si on peut en ajouter plusieurs en une commande, sinon je le fais en plusieurs fois vu que ça va très vite) ?


Message édité par arnuche le 19-02-2019 à 16:45:12
Reply

Marsh Posté le 19-02-2019 à 18:12:27    

pas aussi facilement mais oui

Reply

Marsh Posté le 19-02-2019 à 18:16:53    

Ah, tu peux en dire plus ?
Et quels sont les metadata qu'on peut utiliser aussi facilement que LastWriteTime ?

Reply

Marsh Posté le 19-02-2019 à 18:16:53   

Reply

Marsh Posté le 19-02-2019 à 18:24:42    

j'ai regardé vite fait powershell get metadata from files il y a des réponses. J'imagine que c'est les mêmes métadatas que celles qui s'affichent dans l'explorateur
 
pour la liste de base : https://docs.microsoft.com/en-us/do [...] properties

Reply

Marsh Posté le 19-02-2019 à 19:48:16    

Merci !
J'ai notamment trouvé ceci ;
https://gallery.technet.microsoft.c [...] a-6814c8ba
Pour la hauteur de l'image, il semblerait que ce soit le paramètre Frameheight, sauf que je ne sais pas très bien comment l'utiliser.
J'ai tenté ça qui est accepté mais il ne rajoute qu'un espace et rien derrière ;

Code :
  1. get-childitem -Path "F:\vid" | ForEach-Object {$_ | Rename-Item -NewName {$_.Basename + ' ' + ("{0:0-9}" -f $_.Frameheight) + $_.Extension }}


Je suppose que la partie ("{0:0-9}" -f $_.Frameheight) n'est pas bonne.
 
J'ai tenté ça sur un fichier .ts dont Windows montre bien la "hauteur de trame" (j'ai la version française de Windows) en bas de l'explorateur quand je clique sur ce fichier (ce qui ne marche pas avec du mkv).


Message édité par arnuche le 19-02-2019 à 19:54:07
Reply

Marsh Posté le 21-02-2019 à 16:39:36    

Personne ne sait ce qu'il faut modifier dans le script ci-dessus pour avoir la hauteur de trame dans le nom ? Je ne sais même pas si on peut écrire {0:0-9}, j'ai tenté ça au hasard.
Merci.


Message édité par arnuche le 21-02-2019 à 16:44:14
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed