Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2766 connectés 

  FORUM HardWare.fr
  Programmation
  Shell/Batch

  [Shell/Batch] Renommer des fichiers

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Shell/Batch] Renommer des fichiers

n°1910771
seb06bes
Posté le 31-07-2009 à 17:23:51  profilanswer
 

Bonjour,
 
Je pense que mon problème se résout avec un petit fichier .bat mais je ne sais pas comment de coder.
 
J'ai de nombreux fichiers de ce format 76b188ffe909d3118ba5009033060af9-2009731-1517-100-110.g729
 
Les 32 premiers caractères sont générés aléatoirement et je ne peux pas toucher à cette partie.
Par contre pour la suite c'est moi qui décide (important pour la suite je pense).
 
Je voudrai renommer mes fichiers en supprimant les 32 caractères aléatoire et le "-" pour n'avoir que : 2009731-1517-100-110.g729
 
J'ai essayé plusieurs commandes :
 
copy *-2009*.g729 2009*.g729
résultat : 200988ffe909d3118ba5009033060af9-2009731-1517-100-110.g729
 
copy ????????????????????????????????-2009????????????????.g729 2009????????????????.g729  
résulat : 200988ffe909d3118ba5.g729
 
Bref, je vous épargne les autres tests...
 
Il m'est possible d'avoir un fichier d'origine modifié à partir des 32 1er caractères du style :
 
76b188ffe909d3118ba5009033060af9---2009731-1517-100-110.g729
 
Si cela peut vous aider à détecter l'endroit où couper le fichier.
 
Je ne connais pas assez bien la programmation pour savoir quel langage utilisé, si c'est impossible en bash, vous avez peut-etre la solution dans un autre langage, sachant que je voudrais que cela fonctionne dans un dossier windows.
 
D'avance un grand merci !
 
Sébastien

mood
Publicité
Posté le 31-07-2009 à 17:23:51  profilanswer
 

n°1910894
Sve@r
Posté le 01-08-2009 à 12:32:46  profilanswer
 

seb06bes a écrit :

Bonjour,
 
Je pense que mon problème se résout avec un petit fichier .bat mais je ne sais pas comment de coder.
...
Je ne connais pas assez bien la programmation pour savoir quel langage utilisé, si c'est impossible en bash, vous avez peut-etre la solution dans un autre langage, sachant que je voudrais que cela fonctionne dans un dossier windows.


 
En bash, c'est tout à fait possible. Malheureusement il n'existe pas (à ma connaissance) de bash pour windows.
 

seb06bes a écrit :

J'ai de nombreux fichiers de ce format 76b188ffe909d3118ba5009033060af9-2009731-1517-100-110.g729  
 
Je voudrai renommer mes fichiers en supprimant les 32 caractères aléatoire et le "-" pour n'avoir que : 2009731-1517-100-110.g729
 
Je ne connais pas assez bien la programmation pour savoir quel langage utilisé, si c'est impossible en bash, vous avez peut-etre la solution dans un autre langage, sachant que je voudrais que cela fonctionne dans un dossier windows.


 
Moi j'ai une solution en Python. C'est un langage assez simple qui fonctionne sous Linux et aussi sous windows pour peu que tu prennes la peine de le télécharger et l'installer
 
Ensuite tu crées le fichier "script.py" suivant
 

Code :
  1. #!/usr/bin/env python
  2. # coding: Latin-1 -*-
  3. import os
  4. os.chdir("le répertoire qui va bien" )
  5. for file in os.listdir("." ): os.rename(file, file[33:])


 
Puis tu exécutes "script.py"

Message cité 1 fois
Message édité par Sve@r le 01-08-2009 à 12:36:32

---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
n°1911097
seb06bes
Posté le 03-08-2009 à 09:59:39  profilanswer
 

Batch fonctionne bien sur windows, ce sont les fichier .bat tout a fait compatible.  
 
S'il faut installer un soft pour utiliser les .py cette solution ne me convient pas.
 
Mais merci de ta réponse

Message cité 1 fois
Message édité par seb06bes le 03-08-2009 à 10:00:02
n°1911104
pataluc
Posté le 03-08-2009 à 10:16:52  profilanswer
 

Sve@r a écrit :

En bash, c'est tout à fait possible. Malheureusement il n'existe pas (à ma connaissance) de bash pour windows.

 

ca existe via cygwin ou unxutils entre autres...

 
seb06bes a écrit :

Batch fonctionne bien sur windows, ce sont les fichier .bat tout a fait compatible.

 

S'il faut installer un soft pour utiliser les .py cette solution ne me convient pas.

 

Mais merci de ta réponse

 

je pense que tu confonds "bash" : un des shells (c'est à dire un interpréteur de commandes) les plus répandus sous linux, et "batch" terme un peu générique qui désigne un peu n'importe quel script, ou par extension la ligne de commande (notamment sous windows, mais pas que.)

   

sinon, pourquoi ne pas utiliser un petit soft externe, genre siren http://www.scarabee-software.net/fr/siren.html qui fait très bien l'affaire?

 

en pur dos ca va pas être simple, je vois pas l'interet de se prendre la tête la dessus.


Message édité par pataluc le 03-08-2009 à 10:17:20
n°1911111
seb06bes
Posté le 03-08-2009 à 10:42:16  profilanswer
 

Comme c'est pour un de nos client, nous avons plusieurs script a intégré dans un .bat
Perso j'aurai utilisé un soft, il en existe pas mal qui font cela, mais la c'est un cas particulier.
 
En effet j'ai du confondre batch et bash, je ne sais pas quel code est utilisé dans les .bat


Message édité par seb06bes le 03-08-2009 à 10:42:55
n°1911117
pataluc
Posté le 03-08-2009 à 10:55:42  profilanswer
 

si c'est pas possible en dos pur, tu préfère réinventer la roue en recodant un truc, plutôt que d'utiliser un exe qui fonctionne très bien, et qui peut s'utiliser en ligne de commande?

n°1911120
seb06bes
Posté le 03-08-2009 à 11:00:37  profilanswer
 

Pardon, je pensais que tu parlais d'un programme genre "Ant Renamer".
 
Si il est possible d'effectuer ma demande avec un .exe plutôt qu'un .bat bien sur ça m'intéresse.
 
Il faut juste que tout s'effectue en cliquant sur le .exe et qu'il n'y ai pas de config à rentrer.

n°1911125
pataluc
Posté le 03-08-2009 à 11:12:00  profilanswer
 

je n'utilise pas ant renammer, donc je ne sais pas s'il contient un mode console (mais je suppose), mais avec siren, tu peux faire ca:

Code :
  1. Siren.exe /E "%f(34)" 76b188ffe909d3118ba5009033060af9-2009731-1517-100-110.g729 /R /Q

en ligne de commande, ca marche très bien.

n°1911126
pataluc
Posté le 03-08-2009 à 11:12:24  profilanswer
 

et n'oublie pas de doubler les "%" si tu l'appelle depuis un script bat.

n°1911141
seb06bes
Posté le 03-08-2009 à 11:23:40  profilanswer
 

Merci j'étais en train de chercher la bonne commande sur Siren quand tu m'a donné la réponse ;-)
 
Par contre comment faire si je souhaite que cela s'applique a tout fichier finissant par .g729 ? j'ai essayé Siren.exe /E "%f(34)" *.g729 /R /Q
 
mais il n'a pas compris alors que ca fonctionne si je passe par les filtres de Sirens dans l'interface graphique.


Message édité par seb06bes le 03-08-2009 à 11:43:53
mood
Publicité
Posté le 03-08-2009 à 11:23:40  profilanswer
 

n°1911176
pataluc
Posté le 03-08-2009 à 11:48:30  profilanswer
 

dans Siren, menu "?" > "ligne de commande". tout est expliqué.

n°1911191
seb06bes
Posté le 03-08-2009 à 12:02:33  profilanswer
 

Oui merci j'avais vu ces commandes mais je ne trouve pas la syntaxe que doit porter le filtre pour les lignes de commande. Comme je l'ai dis ca le filtre *.g729 fonctionne dans l'interface graphique.
 
En ligne de commande je ne sais pas comment il l'attends, voici mes tests :
 
Siren.exe /S "*.g729" /E "%%f(34)"  /R /Q
Siren.exe /S *.g729 /E "%%f(34)"  /R /Q
Siren.exe  /E "%%f(34)" /S *.g729 /R /Q
Siren.exe  /E "%%f(34)" /S "*.g729" /R /Q
 
Pareil avec (*.g729) et [*.g729] et j'ai aussi essayé /F mais je pense que c'est /S qui convient le mieux (selon l'aide en ligne)


Message édité par seb06bes le 03-08-2009 à 12:06:59
n°1911215
pataluc
Posté le 03-08-2009 à 13:11:05  profilanswer
 

Code :
  1. Siren.exe /E "%f(34)" /R /Q *.g729

n°1911225
seb06bes
Posté le 03-08-2009 à 13:53:57  profilanswer
 

Merci encore pour ton aide mais ca ne semble pas fonctionner.
 
Il ne faut pas utiliser /F ou /S ?


Message édité par seb06bes le 03-08-2009 à 13:54:45
n°1911256
pataluc
Posté le 03-08-2009 à 14:28:59  profilanswer
 

ah effectivement je lancait la commande depuis cygwin et ca fonctionnait, mais depuis dos ca fonctionne pas... (différence de comportement de "*" entre win et cygwin)

 


du coup faut utiliser "/D ." pour utiliser le rep en cours, ou "/D le_rep" sinon, et sélectionner avec "/F *.g729":

 
Code :
  1. Siren.exe /E "%f(34)" /D . /S "*.g729" /R /Q



Message édité par pataluc le 03-08-2009 à 14:29:30
n°1911271
seb06bes
Posté le 03-08-2009 à 14:39:52  profilanswer
 

Merci ca fonctionne très bien.
 
J'ai aussi regardé du coté de ant renommer et j'ai trouvé très rapidement la solution. Le principe est différent : tu fais tout ce que tu veux en interface graphique, puis tu sauvegarde ton "job" et tu lance une commande en chargeant ce "job".
 
Renamer.exe -b test.arb -af *.g729 -g -x
 
Du coup je ne sais pas lequel choisir, peut-être ant renommer car en cas de modification il est vraiment simple à configurer au niveau du job.  
 
Merci beaucoup pour ton aide pataluc


Message édité par seb06bes le 03-08-2009 à 14:40:04

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Shell/Batch

  [Shell/Batch] Renommer des fichiers

 

Sujets relatifs
[batch] Extraire valeur champ fichier texteSupprimer un bout de code dans des fichiers
Sélectionner plusieurs fichiers du même dossier[Shell] Suppression retours à la ligne/retours chariot
[BATCH] Remonter infos disques et USBLister fichiers sur répertoire racine uniquement
Shell : besoin d'aide pour mon scriptBatch : Numéroté fichier d'un répertoire
[Excel] renommer bouton de commande + l'affecter à ttes les feuilleszipper des fichiers
Plus de sujets relatifs à : [Shell/Batch] Renommer des fichiers


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR