Page 1 sur 1

[AIDE] Prog pour renommer en masse

Publié : mer. 12/oct./2005 16:16
par Ar-S
Bonjour,

je debute en pb et je suis pas loin du niveau 0 en programmation en général (je suis plus acces creation de site et webdesign) mais il n'empeche que j'ai toujours été attiré par ce milieu.

Je m'interresse donc de pres à ce PB que je trouve tres sympa mais encore bien obscure..

Voilà mon soucis... enfin plutot ma requete.

Est-ce que quelqu'un pourrait me montrer comment créer un programme qui se présenterait comme ceci et qui servirait à renommer en masse le contenu d'un repertoire (les extensions et/ou les noms de fichiers) et en changeant si possible tout en minuscule (plus propre pour la creation web):

Image

J'ai créé ça avec le Visual Designer et la génération du code donne ça :

Code : Tout sélectionner

; PureBasic Visual Designer v3.90 build 1360


;- Window Constants
;
Enumeration
  #Window_0
EndEnumeration

;- MenuBar Constants
;
Enumeration
  #MenuBar_0
EndEnumeration

Enumeration
  #MENU_6
  #MENU_7
  #MENU_8
  #MENU_9
  #MENU_10
  #MENU_11
  #MENU_12
  #MENU_13
  #MENU_14
  #MENU_17
  #MENU_18
EndEnumeration

;- Gadget Constants
;
Enumeration
  #String_0
  #Text_0
  #Button_0
  #String_1
  #Radio_0
  #Button_1
EndEnumeration


Procedure Open_Window_0()
  If OpenWindow(#Window_0, 274, 161, 333, 112,  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar , "New window ( 0 )")
    If CreateMenu(#MenuBar_0, WindowID())
      MenuTitle("Renommer")
      MenuItem(#MENU_6, ".jpg")
      MenuItem(#MENU_7, ".mp3")
      MenuItem(#MENU_8, ".gif")
      MenuItem(#MENU_9, ".pdf")
      MenuItem(#MENU_10, ".rar")
      MenuItem(#MENU_11, ".txt")
      MenuItem(#MENU_12, ".mpg")
      MenuItem(#MENU_13, ".mov")
      MenuItem(#MENU_14, ".png")
      MenuTitle("Credits")
      MenuItem(#MENU_17, "MAIL@MAIL.COM")
      MenuItem(#MENU_18, "http://monsite.com")
    EndIf
    
    If CreateGadgetList(WindowID())
      StringGadget(#String_0, 10, 30, 250, 20, "")
      TextGadget(#Text_0, 10, 10, 90, 20, "Repertoire source")
      ButtonGadget(#Button_0, 270, 30, 60, 20, "Parcourir")
      StringGadget(#String_1, 30, 70, 110, 20, "Mettre en minuscule")
      OptionGadget(#Radio_0, 10, 70, 20, 20, "")
      ButtonGadget(#Button_1, 270, 70, 60, 20, "Quitter")
      
    EndIf
  EndIf
EndProcedure
C'est tout ce que je peux dire..

Si quelqu'un pourrait m'aider ce serait bien sympathique.

D'avance merci :P

Publié : mer. 12/oct./2005 17:26
par Droopy
Est-ce que quelqu'un pourrait me montrer comment créer un programme qui se présenterait comme ceci et qui servirait à renommer en masse le contenu d'un repertoire (les extensions et/ou les noms de fichiers) et en changeant si possible tout en minuscule (plus propre pour la creation web):
Tu veux renommer les fichiers du répertoire, auquel cas il faut spécifier un préfixe ou un suffixe.
Ou alors veux tu convertir l'image dans différents formats ?

Publié : mer. 12/oct./2005 17:30
par Ar-S
Houla non !
je veux pas changer les format, juste l'appelation !
IMaGE1.GIF deviendrait au choix image1.gif ou image1.rar (ou autre extensions)

Publié : mer. 12/oct./2005 17:35
par Ar-S
Et cela je le reprécise, en masse, dans un repertoire.

3 exemples :

Avec Virtual Dub, si on extrait un passage sonnore d'un film, l'extension par defaut est .wav alors que la plupart du temps le son est encodé en mp3 ou ogg donc faut renommer.

Avec Acdsee 3 (oui je suis resté au 3 car leger), lors de la conversion d'une image apres retouche ou acquisition, ce belu de soft nomme toujours toutes les extensions en majuscule..

Avec GMAIL, on ne peut pas envoyer d'exe par securité (ce qui n'est pas si mal), mais si je veux envoyer un petit exe fait en pb par exemple (pour le moment je suis en mode console encore :)) et bien faut le renommer.

Voilà a peut pres l'utilisté de la chose.
Mais surtout, j'ai toujours voulu comprendre comment creer un soft de ce genre qui soit leger et rapide

Publié : mer. 12/oct./2005 17:52
par Backup
avec cette procedure :

tu pourra regarder tout les fichiers d'un repertoire !

apres t'a plus qu'a recuperer le nom pour modification , rien de bien mechant ! :D
avec la fonction

Code : Tout sélectionner

 RenameFile(path$ + oldfilename$, path$ + filename$) 

code de Flype :



Code : Tout sélectionner

 Procedure.l ListFiles( directory.s )
  Static num.l
  id.l = ExamineDirectory( #PB_ANY, directory, "*.*" )
  Repeat
    type.l = NextDirectoryEntry()
    If type = 0 : ProcedureReturn num : EndIf
    name.s = DirectoryEntryName()
    full.s = directory + "\" + name
    Select type
      Case 1 : num + 1 : Debug full
      Case 2
        If name <> ".." And name <> "."
          ListFiles( full ) : UseDirectory( id )
        EndIf
    EndSelect
  ForEver
EndProcedure
 
Debug ListFiles("C:\Windows\system32")
:D


ou bien ça avec les extensions !!

Code : Tout sélectionner

NewList FileList.s()

Procedure.l EnumFilesEx(dir.s,total.l)
  id=ExamineDirectory(#PB_Any,dir,"*.*")
  Repeat
    type=NextDirectoryEntry()
    If type=0
      ProcedureReturn total
    EndIf
    name$=DirectoryEntryName()
    If type=1
      total+1 : AddElement(FileList())
      FileList()=dir+"\"+name$
    ElseIf name$<>".." And name$<>"."
      total=EnumFilesEx(dir+"\"+name$,total) : UseDirectory(id)
    EndIf
  ForEver
EndProcedure

Procedure.l EnumFiles(dir.s)
  ClearList(FileList())
  ProcedureReturn EnumFilesEx(dir.s,0)
EndProcedure

; Exemple: Affichage des Dlls windows

Debug EnumFiles("C:\Windows\system32")
ForEach FileList()
  If GetExtensionPart(FileList())="dll"
    Debug FileList()
  EndIf
Next

; Exemple: Affichage des ocx windows

Debug EnumFiles("C:\")
ForEach FileList()
  If GetExtensionPart(FileList())="ocx"
    Debug FileList()
  EndIf
Next 

Publié : mer. 12/oct./2005 18:17
par Backup
ce code a ete trouve sur purearea
et renome les extentions !!
facilement modifiable pour faire ce que tu veux ! :D

Code : Tout sélectionner

; English forum: http://purebasic.myforums.net/viewtopic.php?t=8342&highlight=
; Author: bcgreen (corrected Henrik)
; Date: 15. November 2003

Enumeration 
  #Window_0 
EndEnumeration 

Enumeration 
  #oldextbox 
  #newextbox 
  #renamebutton 
  #browsebutton 
  #Gadget_5 
  #Gadget_6 
  #listbox 
EndEnumeration 


Global path$ ; <- ****** changed ******* 


Procedure Open_Window_0() 
  If OpenWindow(#Window_0, 259, 121, 652, 359,  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar , "batchRenamer") 
    If CreateGadgetList(WindowID()) 
      StringGadget(#oldextbox, 30, 330, 110, 20, "") 
      StringGadget(#newextbox, 260, 330, 120, 20, "") 
      ButtonGadget(#renamebutton, 150, 330, 100, 20, "Rename File!") 
      ButtonGadget(#browsebutton, 20, 10, 140, 30, "Browse For Folder") 
      TextGadget(#Gadget_5, 30, 310, 110, 20, "Old Extension:") 
      TextGadget(#Gadget_6, 260, 310, 120, 20, "New Extension:") 
      ListViewGadget(#listbox, 20, 50, 620, 260) 
      
      
    EndIf 
  EndIf 
EndProcedure 


Procedure listfiles(SomeString$) ; <- ****** changed ******* 
  
  path$=SomeString$ ; <- ****** changed ******* 
  
  result = ExamineDirectory(1, path$, "*.*") 
  If result = 0: MessageRequester("Error!", "Can't open directory!"):ProcedureReturn:EndIf 
  ClearGadgetItemList(#listbox) 
  Repeat 
    result = NextDirectoryEntry() 
    If result = 1 
      AddGadgetItem(#listbox, -1, DirectoryEntryName()) 
    ElseIf result = 0 
      ProcedureReturn 
    EndIf 
  ForEver 
EndProcedure 

Procedure renamefiles(oldext$, newext$) 
  ExamineDirectory(1, path$, "*.*") 
  ClearGadgetItemList(#listbox) 
  Repeat 
    result = NextDirectoryEntry() 
    If result = 1 
      filename$ = DirectoryEntryName() 
      oldfilename$ = filename$ 
      If Right(filename$, 3) = oldext$ 
        filename$ = Left(filename$, Len(filename$)-3) + newext$ 
        RenameFile(path$ + oldfilename$, path$ + filename$) 
      EndIf 
      AddGadgetItem(#listbox, -1, filename$) 
    ElseIf result = 0 
      ProcedureReturn 
    EndIf 
  ForEver 
EndProcedure 

;Global path$ 

Open_Window_0() 

Repeat 
  
  Event = WaitWindowEvent() 
  
  If Event = #PB_EventGadget 
    
    GadgetID = EventGadgetID() 
    
    If GadgetID = #renamebutton 
      If GetGadgetText(#oldextbox) = "" Or GetGadgetText(#newextbox) = "" 
        MessageRequester("Error!", "No extensions specified!") 
      ElseIf path$ = "" 
        MessageRequester("Error!", "No path specified!") 
      Else 
        oldext$ = GetGadgetText(#oldextbox) 
        newext$ = GetGadgetText(#newextbox) 
        renamefiles(oldext$, newext$) 
      EndIf 
      
    ElseIf GadgetID = #browsebutton 
      path$ = PathRequester("Choose a folder:", "") 
      ListFiles(path$) 
    EndIf 
    
  EndIf 
  
Until Event = #PB_EventCloseWindow 

End 

; ExecutableFormat=
; EnableXP
; EOF

Publié : mer. 12/oct./2005 18:18
par Ar-S
Merci pour cette petite ressource qui effectivement marche seule,
maintenant j'aimerai savoir comment l'incure dans mon code pour que lorsque je clique sur parcourir, ça lance une fenetre explorer ou je puisse selectionner le chemin et le recupérer dans le stringgadget "#String_0"..

Publié : mer. 12/oct./2005 18:18
par Ar-S
oups j'avais pas vu ton post suivant, je teste ;)

Publié : mer. 12/oct./2005 19:23
par Ar-S
Tres interressant tout ça ! Merci bien, je vais voir ce que je peux faire avec.

Thkx again :)

Publié : mer. 12/oct./2005 22:30
par dlolo
J'avais fait ça y a un petit moment si ça t'intéresse. Malheureusement sans commentaire, si tu veux des infos n'hésite pas.

Code : Tout sélectionner

Enumeration
  #Window
EndEnumeration
Enumeration
  #selection_list
  #explorateur_list
  #explorateur
  #quit
  #ajouter_sel
  #Frame3D_0
  #frame3d_1
  #Frame3D_3
  #lancer
  #String_pre
  #String_num
  #String_suf
  #String_ext
  #apercu
  #Text_2
  #Text_3
  #Text_4
  #Text_5
  #Text_6
  #ajouter_tout
  #effacer_sel
  #effacer_tout
  #String_point
  #Text_7
  #Text_9
  #String_5
  #Button_7
  #String_nom
  #Text_10
EndEnumeration
Procedure Open_Window()
  If OpenWindow(#Window, 272, 149, 637, 668,  #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_SizeGadget | #PB_Window_TitleBar | #PB_Window_ScreenCentered , "Multi Renommeur ")
    If CreateGadgetList(WindowID())
      
      ;-
      ListIconGadget(#selection_list, 20, 290, 500, 210, "Nom", 400, #PB_ListIcon_MultiSelect | #PB_ListIcon_FullRowSelect)
      ExplorerListGadget(#explorateur_list, 220, 30, 300, 180, "", #PB_Explorer_AlwaysShowSelection | #PB_Explorer_FullRowSelect | #PB_Explorer_MultiSelect | #PB_Explorer_NoDriveRequester | #PB_Explorer_NoFolders | #PB_Explorer_NoParentFolder)
      ExplorerTreeGadget(#explorateur, 20, 30, 170, 220, "")
      ButtonGadget(#quit, 540, 630, 90, 30, "Quitter")
      ButtonGadget(#ajouter_sel, 410, 220, 110, 30, "Ajouter à la selection")
      Frame3DGadget(#Frame3D_0, 210, 10, 320, 250, "Fichiers")
      Frame3DGadget(#frame3d_1, 10, 10, 190, 250, "Explorateur")
      Frame3DGadget(#Frame3D_3, 10, 270, 520, 390, "Sélection")
      ButtonGadget(#lancer, 540, 20, 90, 30, "Lancer")
      StringGadget(#String_pre, 20, 580, 120, 20, "")
      StringGadget(#String_num, 260, 580, 40, 20, "1")
      StringGadget(#String_suf, 310, 580, 110, 20, "")
      StringGadget(#String_ext, 470, 580, 50, 20, "")
      TextGadget(#apercu, 20, 630, 500, 20, "", #PB_Text_Border)
      TextGadget(#Text_2, 20, 610, 190, 20, "Aperçu")
      TextGadget(#Text_3, 20, 560, 120, 20, "Préfixe")
      TextGadget(#Text_4, 260, 560, 40, 20, "n° base")
      TextGadget(#Text_5, 310, 560, 110, 20, "Sufixe")
      TextGadget(#Text_6, 470, 560, 50, 20, "Extension")
      ButtonGadget(#ajouter_tout, 290, 220, 110, 30, "Ajouter tout")
      ButtonGadget(#effacer_sel, 410, 510, 110, 30, "Effacer la selection")
      ButtonGadget(#effacer_tout, 290, 510, 110, 30, "Effacer tout")
      StringGadget(#String_point, 430, 580, 30, 20, "")
      TextGadget(#Text_7, 430, 560, 30, 20, "Point")
      TextGadget(#Text_9, 20, 500, 60, 20, "Destination")
      StringGadget(#String_5, 20, 520, 220, 20, "")
      ButtonGadget(#Button_7, 250, 520, 30, 20, "...")
      StringGadget(#String_nom, 150, 580, 100, 20, "")
      TextGadget(#Text_10, 150, 560, 100, 20, "Nom d'origine")
      
    EndIf
  EndIf
EndProcedure

Declare.s Get_ext(n.s)
Declare.s Get_File(n.s)
Declare make_apercu()

Open_Window()

Repeat
  
  Event = WaitWindowEvent()
  
  If Event = #PB_EventGadget
    
    ;Debug "WindowID: " + Str(EventWindowID())
    
    GadgetID = EventGadgetID()
    
    If GadgetID = #selection_list
      Debug "GadgetID: #selection_list"
      
        make_apercu()
 
    ElseIf GadgetID = #explorateur_list
      Debug "GadgetID: #explorateur_list"
      
    ElseIf GadgetID = #explorateur
      SetGadgetText(#explorateur_list,GetGadgetText(#explorateur))
      
    ElseIf GadgetID = #quit
      Quit=#True
    
    ElseIf GadgetID = #effacer_sel
      ;Debug "GadgetID: #effacer_sel"
      For n = 0 To CountGadgetItems(#selection_list) - 1 
        If GetGadgetItemState(#selection_list, n) = #PB_ListIcon_Selected
          RemoveGadgetItem(#selection_list,n)
        EndIf
      Next n
      
    ElseIf GadgetID = #effacer_tout
      ;Debug "GadgetID: #effacer_sel"
      ClearGadgetItemList(#selection_list)
    
      ElseIf GadgetID = #ajouter_sel
      ;Debug "GadgetID: #ajouter_sel"
      
      For n = 0 To CountGadgetItems(#explorateur_list) - 1 
        If GetGadgetItemState(#explorateur_list, n) = (#PB_Explorer_Selected | #PB_Explorer_File)
            AddGadgetItem(#selection_list,-1,GetGadgetItemText(#explorateur_list,n,0))
        EndIf
      Next n
      
    ElseIf GadgetID = #ajouter_tout
      ;Debug "GadgetID: #ajouter_tout"
      For n = 0 To CountGadgetItems(#explorateur_list) - 1 
        AddGadgetItem(#selection_list,-1,GetGadgetItemText(#explorateur_list,n,0))
      Next n
      
    ElseIf GadgetID = #lancer
      Debug "GadgetID: #lancer"
      
    
      ElseIf GadgetID = #String_pre
        ;Debug "GadgetID: #String_pre"
        make_apercu()  
        
      ElseIf GadgetID = #String_nom
        ;Debug "GadgetID: #String_nom"
        make_apercu()  
        
    ElseIf GadgetID = #String_num
      ;Debug "GadgetID: #String_num"
    make_apercu()  
      
    ElseIf GadgetID = #String_suf
      ;Debug "GadgetID: #String_suf"
      make_apercu()  
    
    ElseIf GadgetID = #String_point
      ;Debug "GadgetID: #String_point"
       make_apercu()  
    
    ElseIf GadgetID = #String_ext
      ;Debug "GadgetID: #String_ext"
    make_apercu()  
      
    EndIf
    
  EndIf
  
Until Event = #PB_EventCloseWindow Or Quit

End

Procedure make_apercu()
  If CountGadgetItems(#selection_list)>0
    
    apercu_pre.s=GetGadgetText(#String_pre)
    ;If apercu_pre=""
    ;  apercu_pre=Get_File(GetGadgetItemText(#selection_list,0,0))
    ;EndIf

    apercu_nom.s=GetGadgetText(#String_nom)
    If apercu_nom=""
      apercu_nom=Get_File(GetGadgetItemText(#selection_list,0,0))
    EndIf
    
    apercu_num.s=GetGadgetText(#String_num)
    
    apercu_suf.s=GetGadgetText(#String_suf)
    
    apercu_point.s=GetGadgetText(#String_point)
     
    apercu_ext.s=GetGadgetText(#String_ext)
    If apercu_ext=""
      apercu_ext=Get_ext(GetGadgetItemText(#selection_list,0,0))
    EndIf
    
    SetGadgetText(#apercu,apercu_pre+apercu_nom+apercu_num+apercu_suf+apercu_point+apercu_ext)
  
  EndIf

EndProcedure

Procedure.s Get_File(n.s)
  For i=1 To Len(n)
    c.s=Mid(n,i,1)
    If c <>"."
      file.s=file+c
    Else
      Break
    EndIf
  Next i
  ProcedureReturn file.s
EndProcedure
Procedure.s Get_ext(n.s)
  For i=Len(n) To 1 Step -1
    c.s=Mid(n,i,1)
    If c <>"."
      temp.s=temp+c
    Else
      For j=Len(temp) To 1 Step -1
       ext.s=ext+Mid(temp,j,1)
      Next j
      Break
    EndIf
  Next i
  ProcedureReturn ext.s
EndProcedure