Novembre 2024 | Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
---|
| | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | | Calendrier |
|
|
| Renommer plusieurs fichiers | |
| | Auteur | Message |
---|
The Gamer
Nombre de messages : 110 Age : 30 Localisation : Toulouse (31) Date d'inscription : 11/05/2010
| Sujet: Renommer plusieurs fichiers Mar 7 Juin 2011 - 20:32 | |
| Bonjour a tous ! Je voulais savoir s'il était possible de renommer tous les fichiers d'un dossier (dont le chemin serait connu par l'emploi de open_dialog) de la maniere suivante : fichier_1.jpeg fichier_2.jpeg fichier_3.jpeg ...etc Y a t-il moyen d'y arriver avec les fonctions de panoramic ? Faut-il appeler une DLL ? Si oui, laquelle et comment l'utiliser ? merci d'avances pour vos réponses qui ne manqueront pas de m'aider !! | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Renommer plusieurs fichiers Mar 7 Juin 2011 - 21:26 | |
| Aucun problème, on peut très bien le faire en Panoramic pur, il y a pour ça la fonction FILE_RENAME f1$,f2$ Il faut juste mettre un peu de codage (facile) autour. Quelque chose comme ça (ce n'est qu'un exemple, je ne sais pas ce que tu veux faire exactement): - Code:
-
DIM rc$, rep$, fm$, a$, new$, nn$, n%, i%
rep$ = "Z:": ' répertoire des fichiers à renommer new$ = "Fichier_": ' nouveau nom générique fm$ = "C:\Temp\Dir": ' fichier de manoeuvre
rc$ = DIR_CURRENT$: DIR_CHANGE rep$ EXECUTE_WAIT "Cmd.exe /c DIR " + "\*.* /B >" + fm$: ' tous les fichiers (*.*), ou *.jpg, etc. FILE_OPEN_READ 1, fm$ n% = 0 WHILE FILE_EOF(1) = 0 FILE_READLN 1, a$: n% = n% + 1 nn$ = new$ + STR$(n%): ' nouveau nom i% = INSTR(a$, ".") IF i% > 0 THEN nn$ = nn$ + MID$(a$, i%, 20): ' suffixe gardé si existe FILE_RENAME a$, nn$ END_WHILE FILE_CLOSE 1: FILE_DELETE fm$ DIR_CHANGE rc$ PRINT STR$(n%) + " fichiers renommés !" END | |
| | | Invité Invité
| Sujet: Re: Renommer plusieurs fichiers Mar 7 Juin 2011 - 23:46 | |
| Bonjour,
J'interviens rapidement en venant de regarder le programme. Il y a un petit problème: avec instr() tu prends le 1er point que tu trouves. Mais un nom de fichier peut très bien avoir un point dans le nom avant l’extension.
Il est tout à fait possible de le faire entièrement en Panoramic sans passer par les commandes MS-DOS. Ce n'est pas une critique, vu que tu es un spécialiste de ce type de commande.
Avec les commandes file_find_first$ et le reste, et comme tu le dis : File_rename f1$,f2$, on peut aussi renommer un dossier. Je l'ai déjà fait il y a un bon moment, sans me rappeler si j'ai sauvegardé le programme.
Je ne peux refaire le programme maintenant et je répond seulement rapidement. Le suffixe il faut le lire depuis la fin et non le début. Désolé de ne pouvoir mieux faire maintenant.
Durs journées en ce moment. Salutation |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Renommer plusieurs fichiers Mar 7 Juin 2011 - 23:55 | |
| Tu as bien sûr raison sur tous les points cosmos, en particulier pour le point, il peut effectivement y en avoir plusieurs et il faut bien partir de la fin. Pareil pour le Dir, on peut très bien faire ça en panoramic pur, mais j'ai été paresseux, j'avoue, et j'ai conservé mes vieilles habitudes. Et puis on ne va pas lui mâcher tout le travail à The Gamer, sinon il n'aura plus le plaisir de programmer ses applications lui_même ! | |
| | | jjn4
Nombre de messages : 2747 Date d'inscription : 13/09/2009
| Sujet: +++ Mer 8 Juin 2011 - 21:53 | |
| Tiens, c'est vrai que ce serait intéressant d'avoir un programme pour renommer les fichiers en série fait en langage panoramic ! (jusqu'à présent, je le faisais avec le poste de travail) alors j'en ai concocté un petit modèle simple : - Code:
-
rem ' Renamall - Logiciel destiné à renommer des fichiers en série dim a$ , i$ , i , j : rem Variables provisoires dim c$ : rem Répertoire Courant dim d$ : rem Début du titre des fichiers dim f$ : rem Fin du titre des fichiers dim nc : rem Numéro du Clic de suppression (premier ou dernier) dim np : rem Numéro du Premier fichier à supprimer dans la liste dim pa : rem Paramètre d`Acceptation pour lister les fichiers à renommer dim r$ : rem Répertoire choisi label fin , ok , ouvrir , partie , suppr , total , zquit rem form0 caption 0," R E N A M A L L - Logiciel permettant de renommer des fichiers en série" width 0,1000 height 0,550 main_menu 1 sub_menu 2 parent 2,1 caption 2,"Fichier" sub_menu 3 parent 3,2 caption 3,"Ouvrir" on_click 3,ouvrir sub_menu 4 parent 4,2 caption 4,"Quitter" on_click 4,zquit
alpha 20 left 20,10 top 20,10 caption 20,"Choisissez un répertoire avec « Ouvrir »"
list 21 left 21,10 top 21,30 width 21,250 height 21,450 hide 21
dlist 22 : rem Copie de la liste 21
alpha 30 left 30,300 top 30,50 font_bold 30 font_size 30,12 caption 30,"RENOMMER COMMENT :" hide 30
container_option 31 left 31,300 top 31,75 width 31,320 height 31,65 hide 31 option 32 parent 32,31 left 32,10 top 32,10 width 32,200 caption 32,"L'ensemble du titre (sauf extension)" on_click 32,total option 33 parent 33,31 left 33,10 top 33,40 width 33,300 caption 33,"Ajouter quelque chose au titre (en dehors de l'extension)" on_click 33,partie alpha 34 left 34,300 top 34,160 font_bold 34 font_size 34,12 hide 34 edit 35 left 35,300 top 35,185 width 35,150 hide 35 on_change 35,fin button 36 left 36,455 top 36,183 width 36,30 caption 36,"Ok" on_click 36,ok inactive 36 hide 36 alpha 37 left 37,300 top 37,240 font_bold 37 caption 37,"Ajouter cela à quel endroit du titre :" hide 37 container_option 38 left 38,300 top 38,260 width 38,100 height 38,65 hide 38 option 39 parent 39,38 left 39,10 top 39,10 width 39,70 caption 39,"Au début" on_click 39,fin option 40 parent 40,38 left 40,10 top 40,40 width 40,70 caption 40,"A la fin" on_click 40,fin alpha 41 left 41,300 top 41,350 font_bold 41 font_color 41,255,0,0 caption 41,"Exclure les fichiers que vous ne voulez pas inclure dans le lot à renommer" hide 41 container_option 42 left 42,300 top 42,370 width 42,400 height 42,65 hide 42 option 43 parent 43,42 left 43,10 top 43,10 width 43,350 caption 43,"Désigner individuellement les fichiers à exclure en cliquant dessus" option 44 parent 44,42 left 44,10 top 44,40 width 44,350 caption 44,"Les exclure par lot en cliquant sur le premier puis sur le dernier" alpha 50 left 50,805 top 50,50 font_bold 50 caption 50,"Extensions"+chr$(13)+"à exclure"+chr$(13)+"du listing" memo 51 left 51,800 top 51,93 width 51,70 height 51,300 if file_exists("C:\Renamall.txt")=0 file_open_write 1,"C:\Renamall.txt" file_writeln 1,"db" file_writeln 1,"jbf" file_close 1 end_if file_open_read 1,"C:\Renamall.txt" while file_eof(1)<>1 file_readln 1,a$ item_add 51,a$ end_while file_close 1 end : rem ' Début des routines
fin: : rem Activation ou désactivation du bouton ok if checked(32)=1 if text$(35)<>"" active 36 else inactive 36 end_if end_if if checked(33)=1 if checked(39)=1 or checked(40)=1 if text$(35)<>"" active 36 else inactive 36 end_if end_if end_if return
ok: : rem Renommage des fichiers sélectionnés clear 21 if count(22)>0 for i=1 to count(22) a$=item_read$(22,i) for j=len(a$) to 1 step -1 if mid$(a$,j,1)="." d$=left$(a$,j-1) f$=right$(a$,len(a$)-j+1) exit_for end_if next j if checked(32)=1 i$=right$("00000"+str$(i),6) file_rename a$,text$(35)+i$+f$ item_add 21,text$(35)+i$+f$ else if checked(39)=1 file_rename a$,text$(35)+a$ item_add 21,text$(35)+a$ else file_rename a$,d$+text$(35)+f$ item_add 21,d$+text$(35)+f$ end_if end_if next i end_if for i=30 to 31 hide i next i for i=34 to 38 hide i next i for i=41 to 42 hide i next i off_click 21 dir_change c$ return
ouvrir: : rem Choix du répertoire où renommer les fichiers for i=30 to 31 hide i next i for i=34 to 38 hide i next i for i=41 to 42 hide i next i hide 21 font_bold 20 font_color 20,255,0,0 caption 20,"Ouvrez un fichier quelconque du répertoire choisi" open_dialog 99 a$=file_name$(99) if a$<>"_" for i=len(a$) to 1 step -1 if mid$(a$,i,1)="\" r$=left$(a$,i) exit_for end_if next i end_if delete 99 font_bold_off 20 font_color 20,0,0,0 caption 20,"Répertoire : "+r$ clear 21 clear 22 show 21 c$=dir_current$ dir_change r$ a$=file_find_first$ while a$<>"_" if instr(a$,".")<>0 pa=0 if count(51)>0 for i=1 to count(51) if right$(a$,len(item_read$(51,i))+1)="."+item_read$(51,i) then pa=1 next i end_if if pa=0 item_add 21,a$ item_add 22,a$ end_if end_if a$=file_find_next$ end_while file_find_close for i=30 to 31 show i next i for i=41 to 42 show i next i mark_off 32 mark_off 33 mark_off 39 mark_off 40 mark_off 43 mark_off 44 on_click 21,suppr return
partie: : rem Affichage des éléments affectés au renommage d`une partie du titre for i=34 to 38 show i next i caption 34,"Quel ajout affecter au titre :" set_focus 35 inactive 36 return
suppr: : rem Suppression des titres à ne pas renommer if checked(43)=1 j=item_index(21) item_delete 21,j item_delete 22,j end_if if checked(44)=1 nc=nc+1 if nc>1 then nc=0 if nc=1 np=item_index(21) else for i=1 to item_index(21)-np+1 item_delete 21,np next i end_if end_if return
total: : rem Affichage des éléments affectés au renommage de la totalité du titre for i=34 to 36 show i next i caption 34,"Quel nouveau titre :" set_focus 35 hide 37 hide 38 mark_off 39 mark_off 40 return
zquit: : rem Quitter ce programme terminate
(ceci est la version 4 rénovée)
Dernière édition par jjn4 le Jeu 9 Juin 2011 - 16:52, édité 7 fois | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Renommer plusieurs fichiers Mer 8 Juin 2011 - 22:28 | |
| Simple, efficace, j'adore. Bon, juste une petit truc histoire de dire quelque chose. A la place de: - Code:
-
j=len(str$(i)) i$=string$(6-j,"0")+str$(i) tu peux mettre - Code:
-
i$=right$("00000"+str$(i), 6) Mais bon, ce n'est pas le plus important dans le programme ^^ | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Renommer plusieurs fichiers Mer 8 Juin 2011 - 22:39 | |
| Joli jjn4 (enfin, pas toi, le programme quoique... je sais pas... ) Et cela dit, ça fait quand même plaisir de te revoir, tu t'es fait plutôt rare ces derniers temps, comme quelques autres ! En plus c'était ton millième message, ça s'arrose ! | |
| | | jjn4
Nombre de messages : 2747 Date d'inscription : 13/09/2009
| Sujet: +++ Mer 8 Juin 2011 - 23:58 | |
| C'est vrai qu'on ne m'a pas vu souvent... depuis quelques temps, d'autres préoccupations... Dis donc, JL35, tu as l'oeil rivé sur les compteurs ! Eh, mais c'est vrai que c'était mon millième message, ah oui, ça s'arrose, alors à votre bonne santé ! ah là là, arrêtez de rouler sous la table, quand même ! P.S.: Et j'ai déjà ajouté une fonction supplémentaire à mon programme (on n'arrête pas le progrès !) (voir plus haut la version rénovée) et j'ai appliqué ton bon conseil, jicehel, qui économise une ligne (écologie ) | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Renommer plusieurs fichiers Jeu 9 Juin 2011 - 11:02 | |
| A la tienne Je pense que dans ton outil, le seul petit truc qui manque c'est de pouvoir paramètrer les extensions que l'on ne veut pas traiter au lieu de les mettre en dur... Sinon, ça marche nickel | |
| | | jjn4
Nombre de messages : 2747 Date d'inscription : 13/09/2009
| Sujet: +++ Jeu 9 Juin 2011 - 12:46 | |
| J'ai encore fait une nouvelle version de mon programme de renommage qui permet d'enlever de façon plus rapide les fichiers qu'on ne veut pas traiter. Voir version n°3 plus haut. Par contre, jicehel, je ne comprends pas ce que tu veux dire : - Citation :
- paramètrer les extensions que l'on ne veut pas traiter
Je ne trouve pas que renommer les extensions soit une bonne idée. - Citation :
- les mettre en dur
Qu'est-ce que ça veut dire ? | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Renommer plusieurs fichiers Jeu 9 Juin 2011 - 13:55 | |
| Désolé, j'ai été trop laconique, c'est concernant cette ligne: if right$(a$,3)<>".db" and right$(a$,4)<>".jbf" L'idée d'exclure automatiquement certains fichiers m'a paru en effet interessante puisque l'on sait ce que l'on veut faire, mais le rendre paramètrable permet de rendre le programme encore plus polyvalent, mais encore une fois, là, on est dans le détail, j'adore le programme. Il est super simple à utiliser, efficace et bien codé (je ne suis pas un expert et je code comme un cochon, ne te fie pas trop à mon jugement, mais je le donne quand même ) | |
| | | jjn4
Nombre de messages : 2747 Date d'inscription : 13/09/2009
| Sujet: +++ Jeu 9 Juin 2011 - 16:51 | |
| Eh, mais c'est une bonne idée, ça ! Aussitôt dit, aussitôt fait : (voir la version 4, située plus haut) Merci, jicehel ! | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Renommer plusieurs fichiers Jeu 9 Juin 2011 - 17:24 | |
| Comme je le disais à Georges, j'ai toujours des bonnes idées pour donner du travail aux autres ^^ Merci pour ta modif | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Renommer plusieurs fichiers Ven 10 Juin 2011 - 1:16 | |
| Ah au fait, un détail, j'ai modifié la ligne de test (initialement: if upper$(right$(a$,len(item_read$(51,i))+1))="."+upper$(item_read$(51,i)) then pa=1) en:
if upper$(right$(a$,len(item_read$(51,i))+1))="."+upper$(item_read$(51,i)) then pa=1
et sinon dans les détails, j'ai mis en début de programme: dim fic_temp$ fic_temp$ = "C:\Renamall.txt"
et j'ai remplacé les occurrences de "C:\Renamall.txt" par fic_temp$
Bref, rien que des broutilles qui ne change pas grand chose
| |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Renommer plusieurs fichiers Ven 10 Juin 2011 - 1:28 | |
| - Citation :
- Ah au fait, un détail, j'ai modifié la ligne de test
(initialement: if upper$(right$(a$,len(item_read$(51,i))+1))="."+upper$(item_read$(51,i)) then pa=1 ) en: if upper$(right$(a$,len(item_read$(51,i))+1))="."+upper$(item_read$(51,i)) then pa=1 j'ai beau m'écarquiller les yeux, je ne vois pas la moindre différence entre ces deux lignes ?? | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Renommer plusieurs fichiers Ven 10 Juin 2011 - 7:27 | |
| Tu as raison, mon copier / coller n'a pas bien marché Il fallait lire: initialement: if right$(a$,len(item_read$(51,i))+1)="."+item_read$(51,i) then pa=1 en: if upper$(right$(a$,len(item_read$(51,i))+1))="."+upper$(item_read$(51,i)) then pa=1 Et voilou ... | |
| | | The Gamer
Nombre de messages : 110 Age : 30 Localisation : Toulouse (31) Date d'inscription : 11/05/2010
| Sujet: Re: Renommer plusieurs fichiers Sam 11 Juin 2011 - 13:01 | |
| Merci a tous pour votre aide, cela me permet de mieux comprendre comment interagir avec l'invite de commande et panoramic, afin de rennomer des fichiers. Je pense utiliser le premier code. | |
| | | Contenu sponsorisé
| Sujet: Re: Renommer plusieurs fichiers | |
| |
| | | | Renommer plusieurs fichiers | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |