Modifier extension fichiers dans arborescence

Modifier extension fichiers dans arborescence - Shell/Batch - Programmation

Marsh Posté le 19-09-2006 à 22:47:41    

Salut à tous,
 
Attention, pas très fort en batch....
 
J'aimerais modifier le nom de tout une série de fichiers *.sxw en *.odt. (pour ceux qui ont compris, je suis passé de OpenOffice 1.1.5 à 2.0...  ;) ).
Jusque là, je peux le faire, si tout était dans le même dossier. Mais mon problème, ce sont les sous dossiers.
 
J'avoue avoir pas mal de difficultés avec la boucle FOR (parce que je sens qu'il faut y passer...) et ses paramètres. Je sais, c'est pénible ces types qui débarquent et qui veulent qu'on leur écrive leur code, mais là après deux heures de recherches sur le forum, sur le "for /?", sur le post juste en-dessous de webding pour ceux qui suivent.. ;) (ça ressemble à ce que je veux faire mais le code m'est d'abord plutôt obscur, et puis le problème ne semble pas être l'arborescence..), et autres liens, je suis complètement paumé.
 
Donc si quelqu'un pouvait ne serait-ce que m'aiguillonner ça serait sympa, parce que je sens bien que ça ne doit pas être si compliqué que ça.
 
 :sol:

Reply

Marsh Posté le 19-09-2006 à 22:47:41   

Reply

Marsh Posté le 19-09-2006 à 23:17:44    

Poste ton code actuel, on le corrigera ensemble ;)

Reply

Marsh Posté le 20-09-2006 à 00:52:44    

Salut nglechau,
 

wackevat a écrit :

Poste ton code actuel, on le corrigera ensemble ;)


 
 
 :whistle:  Si tu veux, mais mon code se résume un peu à ça en gros:
 

Citation :

ren d:\*.sxw *.odt


 
Ce qui marche très bien à la racine de D: bien-sûr, mais le truc c'est qu'il faut fouiller dans tous les dossiers, et sous-dossiers, etc...
Et là, comme je disais, point de correction de code, point de mauvaise syntaxe, juste rien..... :sweat:  Je ne sais pas comment faire une récurrence sur les dossiers.
Et j'ai du mal à démarrer une boucle FOR. Les paramètres /D, /L, /R, /F par exemple ne sont pas très clairs (je parle de l'aide FOR /?). En clair, je suis perdu, et je m'arrache les cheveux parce que je sens que ça doit tenir en une ligne...   :pfff:

Reply

Marsh Posté le 20-09-2006 à 10:23:32    

Si tu n'es pas obligé à passer par le batch (ou tout autre langage), plusieurs utilitaires de renommage existent :)

Reply

Marsh Posté le 20-09-2006 à 11:55:23    

wackevat a écrit :

Si tu n'es pas obligé à passer par le batch (ou tout autre langage), plusieurs utilitaires de renommage existent :)


 
 
Oui, je sais. Mais je n'aime pas installer des petits trucs quand je peux l'éviter. Avec un batch c'est bien plus propre. De plus j'aurais besoin de faire ça sur un réseau (donc une autre boucle..... mais celle-là je l'ai!). Et surtout j'ai vraiment envie de peaufiner mes connaissances en DOS.
 
Tu me dis ça parce que tu t'inquiètes? C'est si compliqué que ça?

Reply

Marsh Posté le 20-09-2006 à 21:57:14    

Non, ce n'est pas compliqué. Mais juste que tu as l'air de vraiment débuter dans la matière, vu tes difficultés de saisir l'aide (ne le prends pas mal hein ? :D )

Reply

Marsh Posté le 20-09-2006 à 23:35:04    

wackevat a écrit :

Non, ce n'est pas compliqué. Mais juste que tu as l'air de vraiment débuter dans la matière, vu tes difficultés de saisir l'aide (ne le prends pas mal hein ? :D )


 
Non je ne le prends pas mal nglechau, rassure toi.  :D  
 
Mais est-ce compliqué, ou long, pénible, pour toi de me l'écrire cette ligne de code par exemple? Parce que si j'ai déjà une base, je pense que je pourrais comprendre.

Reply

Marsh Posté le 20-09-2006 à 23:53:44    

fait du vbs, ce sera sur toute les machines de ton réseau et surement plus confortable que du batch.
 
( accessoirement, quel interêt de renommer les fichiers ? )


---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.
Reply

Marsh Posté le 21-09-2006 à 06:36:01    

ramkin a écrit :

Parce que si j'ai déjà une base, je pense que je pourrais comprendre.


Euh... justement, tout a été dit dans le topic de webding, le code y a été donné - une seule ligne suffit effectivement (avant qu'il opte pour la soluce moins pratique qui était l'activation de l'expansion retardée des variables d'environnement) ;)
 
Tu prends la même boucle, corriges l'erreur qu'il faisait et enfin modifies la commande ren pour adapter à ton cas et voilà :D

Reply

Marsh Posté le 23-09-2006 à 23:41:09    

Salut tous,
 
D'abord mille excuses pour le retard, mais j'ai modifié mon mail, et impossible de me connecter au forum.
 
@0x90
Je veux du batch.  :ange:  
L'intérêt de renommer des fichiers est justifié lorsque tu possèdes plus de 500 fichiers à l'extension .sxw (format OpenOffice 1.1.5), fichiers dont tu te sers constamment, que tu passes à la version 2.0 de OpenOffice au nouveau format .odt, et que tu sais qu'à chaque fois tu devras faire un Enregistrer sous..., puis supprimer le fichier .sxw
 
@nglechau
Mais justement, à propos du code de webding, celui-ci ne parcourt pas l'arborescence. J'avais bien essayé, mais la boucle ne s'effectue que dans le dossier spécifié.
J'ai continué à chercer, et ironie du sort, j'ai trouvé grâce à un certain......nglechau!  :hello:  Ici même, où tu réponds simplement qu'il faut utiliser l'option /r
 
Ahhhh, si tu m'avais dit ça dès le début....  :whistle:  
 
 
Bon, j'ai enfin ma ligne de code:

Citation :

for /r C:\temp %%a in (*.sxw) do ren %%a %%~na.odt


 
Ce code renomme tous les fichiers .sxw en .odt se trouvant dans l'arborescence c:\temp
 
Seul problème, mais de taille, les espaces dans les noms!! Les noms de fichiers avec espaces ne sont pas traités. Pire, les fichiers se trouvant dans un dossier avec un nom à espace ne sont pas traités non-plus: "La syntaxe de la commande n'est pas correcte"
 
Après plusieurs essais, j'ai donc mis des guillemets partout:

Citation :

for /r "C:\temp" %%a in (*.sxw) do ren "%%a" "%%~na.odt"


et ça semble marcher au poil.
 
C'est pas un peu bizarre ces guillemets autour des variables?  :??:  

Reply

Marsh Posté le 23-09-2006 à 23:41:09   

Reply

Marsh Posté le 24-09-2006 à 00:05:58    

Ouais, mais changer l'extention va pas changer le type du fichier, ca va avoir la gueule d'un truc propre sans l'être. Autant l'idée de batcher le boulot n'est pas mauvaise, autant renommer plutot que convertir je trouve ca douteux :/


---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.
Reply

Marsh Posté le 24-09-2006 à 10:10:00    

0x90 a écrit :

Ouais, mais changer l'extention va pas changer le type du fichier, ca va avoir la gueule d'un truc propre sans l'être. Autant l'idée de batcher le boulot n'est pas mauvaise, autant renommer plutot que convertir je trouve ca douteux :/


 
Entièrement d'accord. Sauf qu'en lecture, il n'y aucun changement, et lorsque je les modifierai, je n'aurais pas à faire les manips citées plus haut.
 
 :sol:

Reply

Marsh Posté le 24-09-2006 à 19:50:03    

ramkin a écrit :

Ahhhh, si tu m'avais dit ça dès le début....  :whistle:


Bah, puisque dans le topic de Webding, j'avais recommandé la lecture de l'aide et dans celui-ci, je t'avais conseillé de corriger le topic de Webding.
 
Au début, je donnais immédiatement les soluces, mais avec le temps, je me suis rendue compte que les mêmes questions revenaient tous les jours, attendant des soluces prêtes à employer :pt1cable:  
 

ramkin a écrit :

C'est pas un peu bizarre ces guillemets autour des variables?  :??:


Au contraire, c'est tout à fait normal.
 
Les espaces servent de séparateurs entre les paramètres (d'où l'erreur que tu as rencontrée). Les guillemets évitent cela.

Reply

Marsh Posté le 24-09-2006 à 19:56:21    

Merci pour ton aide en tout cas.
 
 :sol:

Reply

Sujets relatifs:

Leave a Replay

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