Renommer des fichiers [Shell/Batch] - Shell/Batch - Programmation
Marsh Posté le 01-08-2009 à 12:32:46
seb06bes a écrit : Bonjour, |
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 |
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 :
|
Puis tu exécutes "script.py"
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
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.
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
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?
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.
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 :
|
en ligne de commande, ca marche très bien.
Marsh Posté le 03-08-2009 à 11:12:24
et n'oublie pas de doubler les "%" si tu l'appelle depuis un script bat.
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.
Marsh Posté le 03-08-2009 à 11:48:30
dans Siren, menu "?" > "ligne de commande". tout est expliqué.
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)
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 ?
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 :
|
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
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