[Shell/Batch] Renommer des fichiers

Renommer des fichiers [Shell/Batch] - Shell/Batch - Programmation

Marsh Posté le 31-07-2009 à 17:23:51    

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

Reply

Marsh Posté le 31-07-2009 à 17:23:51   

Reply

Marsh Posté le 01-08-2009 à 12:32:46    

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.
Reply

Marsh Posté le 03-08-2009 à 09:59:39    

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
Reply

Marsh Posté le 03-08-2009 à 10:16:52    

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
Reply

Marsh Posté le 03-08-2009 à 10:42:16    

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
Reply

Marsh Posté le 03-08-2009 à 10:55:42    

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?

Reply

Marsh Posté le 03-08-2009 à 11:00:37    

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.

Reply

Marsh Posté le 03-08-2009 à 11:12:00    

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.

Reply

Marsh Posté le 03-08-2009 à 11:12:24    

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

Reply

Marsh Posté le 03-08-2009 à 11:23:40    

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
Reply

Marsh Posté le 03-08-2009 à 11:23:40   

Reply

Marsh Posté le 03-08-2009 à 11:48:30    

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

Reply

Marsh Posté le 03-08-2009 à 12:02:33    

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
Reply

Marsh Posté le 03-08-2009 à 13:11:05    

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

Reply

Marsh Posté le 03-08-2009 à 13:53:57    

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
Reply

Marsh Posté le 03-08-2009 à 14:28:59    

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
Reply

Marsh Posté le 03-08-2009 à 14:39:52    

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
Reply

Sujets relatifs:

Leave a Replay

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