Aidez UN gro Boulet en VbScript

Oye Oye Cher developpeur je suis sans doute le plus nil developpeur que vous rencontrerez durant toute votre vie...

Soit je debute donc essaie de me familiariser avec le VBScript...
Jessaie de Faire Un Disk Cleaner ki supprimerai les *.tmp d'un disk ou repertoire...

Voici le debut du code Source :

MsgBox "Bienvenue dans l'assistant" & Chr(13) & "Nettoyage des Disks" ,vbOk + vbInformation, "Menage des HD"

MsgBox "Veuillez Choisir" & Chr(13) & "Le disk que vous voulez nettoyer" ,vbOk + vbExclamation, "Menage des HD"

Function B(Msg)
On Error Resume Next
Dim a,f,i,w
Set a=WScript.CreateObject("Shell.Application")
Set w=CreateObject("Wscript.Shell")

Set f=a.BrowseForFolder(&H0&,Msg,&h1&)
B=f.ParentFolder.ParseName(f.Title).Path

If Err.Number<>0 Then
B=Null
If f.Title="Desktop" Then B=w.SpecialFolders("Desktop")
i=InStr(f.Title, ":")
If i>0 Then B=Mid(f.Title,i-1,2) & "\"
End If
End Function

S=B("Choisissez un répertoire")

If IsNull(S) Then
MsgBox "Selection Invalide"
Else
MsgBox "Vous avez choisi " & S & Chr(13) & "Etes-vous sûre ?" ,vbYesNoCancel + vbQuestion, "Menage des HD"
End If


MICI DAVANCE !!!!

20 réponses

  • Votes
  • Date
  • Date décroissante
  1. Bah, et c'est quoi ta question ?
    T'es bien parti, la !

    Kalamit,
    Parle à ma culasse, mon carter est malade. :)
    1. Bah justement jsuis ptete bien parti mais je sai meme pas attribuer une fonction pour chak bouton des box !

      Jessaie en vain avec la doc mais jsuis vraiment tro debutant pour comprendre...

      Jsuis pa matheux en plus a la base je pete un plomb !

      Donkeu jfais koi pour lui kil supprime les *.tmp du repertoire ou du disk et ses sous-repertoires apres avoit cliker sur uui apres confirmation ?

      Et kan on clik sur Cancel jfais comment pour kitter ?

      Et sur nan ?

      PLEASE HELP ME JSUIS UN GROS BOULET DEBUTANT...
      1. J'ai vraiment du mal à te lire... Pourrais tu faire un effort, stp ? :)
        Pour le reste, je vais te mettre sur la voie:
        Dim Res
        Res = MsgBox ("Vous avez choisi " & S & Chr(13) & "Etes-vous sûre ?" ,vbYesNo + vbQuestion,"Menage des HD" )
        Select Case Res
        	Case vbYes
        	'Traitement nettoyage des disques
        	'Utilise la fonction system()
        	Case vbNo
        	'Exit du programme
        End Select


        Kalamit,
        Parle à ma culasse, mon carter est malade. :)
        1. Désolé pour mon ecriture...

          J'ai toujours ce reflexe d'écrire facon sms pour les forums...

          Voir pour tout meme !

          Mais je fais l'effort

          Merci en tout CAS !!!
          1. Case vbYes
            'Traitement nettoyage des disques
            'Utilise la fonction system() ---> Perdu !!!
            Case vbNo
            'Exit du programme ----> Je voudrais bien savoir ouais
            cest koi la fonction qui quitte le script ! Ca me servirai
            pour les Cancel aussi !
            1. C'est pas system( )... (J'suis encore dans le php) :)

              En fait, pour démarrer un executable, il te faut faire:

              Set shell = WScript.CreateObject("WScript.Shell") //Création d'un objet
              Shell.run ("%SystemRoot%\system32\cmd32.exe") //Utilisation des proprietés


              Kalamit,
              Parle à ma culasse, mon carter est malade. :)
              1. Merci cest cool et bon a savoir mais ca ne repond pas a mes attentes ?

                Quel est la fonction a mettre pour que lorsque l'on clique sur Cancel ca quitte le script ?

                Et il n'ya que ce moyen la pour supprimer les *.tmp d'un repertoire ? Par le Cmd ?
                1. Ben, si tu mets rien, le programme se termine normalement, et ca quitte tout seul !

                  Kalamit,
                  Parle à ma culasse, mon carter est malade. :)
                  1. Bah nan justement par exemple sur les msgbox du debut quand jappuie sur Cancel ou Ok il passe a la Msg Box d'après!

                    Avec Cancel jai mit genre "Bah pourquoi tu lances l'assistant?" et bim il passe a la msgBox d'après moi je veux pas je veux qu'il quitte !

                    Comment kon fait ?
                    1. Re,
                      Faut que tu gères tes msgbox avec des select case comme je l'ai fait.
                      Si je clique sur le premier bouton, il se passe ca, si je clique sur l'autre, il se passe ca.
                      Pour stopper le code, il me semble que c'est End, j'en suis pas sur, vu que c'est pas du vb mais du vbscript.

                      Kalamit,
                      Parle à ma culasse, mon carter est malade. :)
                      1. Apparement, le mot clé stop a l'air de fonctionner...

                        Kalamit,
                        Parle à ma culasse, mon carter est malade. :)
                        1. Ouais merci mais jai trouvé pour quitter le script quand tu quitte sur Cancel

                          Case vbNo ou Case vbCancel
                          suivi de wscript.quit

                          JE missione maintenant pour faire en sorte que le script supprime les .tmp ou toute autre fichier a supprimer donc ne servant plus pour le systeme par rapport au repertoire ou au disk ke lon choisit... et donc a tous les repertoires ki en suit...

                          Kkun sait ?
                          1. Alors Jai bien avancé aujourdhui et je suis bloké sur un truc :

                            Dim Wel
                            Wel = MsgBox ("Bienvenue dans l'assistant" & Chr(13) & "Nettoyage des Disques" ,vbOk + vbInformation, "Ménage des HDD")
                            Select Case Wel
                            Case VbOk

                            Case VbCancel
                            MsgBox "Bah Pourquoi tu lances l'assistant alors ?", ,"Alala"
                            wscript.quit
                            End Select

                            '---------------------------------------------------------------------------------------------------------------------------

                            Choice = MsgBox ("Veuillez Choisir" & Chr(13) & "Le disque que vous voulez nettoyer" ,vbOk + vbExclamation, "Ménage des HDD")
                            Select Case Choice
                            Case VbOk

                            Case VbCancel
                            MsgBox "Bah pourquoi tu lances l'assistant alors ?", ,"Alala"
                            wscript.quit
                            End Select

                            '---------------------------------------------------------------------------------------------------------------------------

                            Function B(Msg)
                            On Error Resume Next
                            Dim a,f,i,w
                            Set a=WScript.CreateObject("Shell.Application")
                            Set w=CreateObject("Wscript.Shell")

                            Set f=a.BrowseForFolder(&H0&,Msg,&h1&)
                            B=f.ParentFolder.ParseName(f.Title).Path

                            If Err.Number<>0 Then
                            B=Null
                            If f.Title="Desktop" Then B=w.SpecialFolders("Desktop")
                            i=InStr(f.Title, ":")
                            If i>0 Then B=Mid(f.Title,i-1,2) & "\"
                            End If
                            End Function

                            '---------------------------------------------------------------------------------------------------------------------------
                            ' CONFIRMATION DU DOSSIER

                            S=B("Choisissez un répertoire")

                            If IsNull(S) Then
                            MsgBox "Sélection Invalide"
                            Else

                            Dim Res
                            Res = MsgBox ("Vous avez choisi " & S & Chr(13) & "Etes-vous sûre ?" ,vbYesNo + vbQuestion,"Ménage des HDD")
                            Select Case Res

                            Case VbYes
                            Set FSys = CreateObject("Scripting.FileSystemObject")
                            Set MonFic = FSys.CreateTextFile("batch.bat")
                            With MonFic
                            .writeline "del /S " & S & "\*.tmp"
                            .writeline "exit"
                            End With

                            Set Shell = WScript.CreateObject("WScript.Shell") 'Création d'un objet
                            With Shell
                            .run ("batch.bat") 'Utilisation des proprietés
                            End With

                            Case VbNo

                            MsgBox "Bah Pourquoi tu lances l'assistant alors ?", , "Alala"
                            wscript.quit

                            End Select
                            End IF

                            Dans la partie en Gras vous voyez ???
                            Vous voyez donc ke je lui dit de créer un Batch...
                            Et apres de le lancer

                            Mais kan il le lance il me dit que Il peut pas lancer le fichier pck il est deja en cours d'utilisation !!!!

                            ?????
                            1. Salut ca fait peut etre plus de deux ans que cette article est sortie mais je voulais y apporter ma contribution....
                              pour la source je me suis pencher dessus et je croit que tu peut faire comme ca:

                              '---------------------------------------------------------------------------------------------------------------------------
                              ' CONFIRMATION DU DOSSIER

                              S=B("Choisissez un répertoire")

                              If IsNull(S) Then
                              MsgBox "Sélection Invalide"
                              Else

                              Dim Res
                              Res = MsgBox ("Vous avez choisi " & S & Chr(13) & "Etes-vous sûre ?" ,vbYesNo + vbQuestion,"Ménage des HDD")
                              Select Case Res

                              Case VbYes
                              Set FSys = CreateObject("Scripting.FileSystemObject")
                              Set MonFic = FSys.CreateTextFile("batch.bat")
                              With MonFic
                              .writeline "cd " & S
                              .writeline "del /S /F /Q *.tmp"
                              .writeline "exit"
                              .close
                              End With

                              Set Shell = WScript.CreateObject("WScript.Shell") 'Création d'un objet
                              With Shell
                              .run ("batch.bat") 'Utilisation des proprietés
                              End With

                              Case VbNo

                              MsgBox "Bah Pourquoi tu lances l'assistant alors ?", , "Alala"
                              wscript.quit

                              End Select
                              End IF

                              Comme ca ca marche plus ou moins il faudrait que tu puisse supprimer le batch a la fin :)
                              si ca ne t'aide pas ca aidera quelqu'un d'autre

                              Vive la prog
                          2. Vive les haltères natives :o)
                            Du temps est passé depuis, mais j'apporte une solution testée et approuvée par ma bécane
                                    dim objShell
                                    dim Racine: Racine = 17
                                    dim objFolder
                                    dim FolderPath
                                    dim FolderFlag: FolderFlag = 0
                                    dim FSO: Set FSO = CreateObject("Scripting.FileSystemObject")
                                    dim lechemin, nbrdel,nbrtemp: nbrtemp=0
                                    
                                    function FolderChoice(FolderPath, FolderFlag)
                                            Entry = "~= L'HDD Ménage =~" & vbcrlf & vbcrlf & "Suppression des fichiers .tmp"
                                            on error resume next
                                            FolderFlag = 1
                                            set objShell = CreateObject("Shell.Application")
                                            set objFolder = objShell.BrowseForFolder(0, Entry, 0, Racine)
                                            
                                            if (not objFolder is nothing) then
                                                    FolderPath = objFolder.ParentFolder.Parsename(objFolder).Path
                            

                            ' Si objFolder est bien de type Lettre:\Dossier\Sous_Dossier... pas de problème.
                            ' Mais objFolder peut être de la forme :
                            ' NOM_VOLUME(LETTRE:\)
                            ' ce qui génère donc une erreur de traitement par l'instruction précédente.
                            ' Nous pouvons quand même en extraire un chemin valide :
                                                    charpos=InStr(objFolder.Title, ":")
                                                    If charpos>0 Then FolderPath=Mid(objFolder.Title,charpos-1,2) & "\"
                            

                            ' Mais, si on choisit Documents de Toto, par exemple...
                            ' C'est un dossier dit virtuel.
                            ' Et la boite de dialogue en propose un certain nombre.
                            'C'est la bête noire à laquelle je ne trouve pas de solution.
                            ' Ne sachant pas en extraire un PATH valide,il faut les éliminer des possibilités de choix.
                            ' Ils restent accessibles via la racine des disques.
                            ' C'est plus laborieux pour accéder à certains, mais pour l'instant la fin justifie les moyens.
                                            else
                                                    wscript.quit
                                            end if
                                            set objFolder = nothing
                                            set objShell = nothing
                                    end function
                                    
                                    function BoucleFolder(FolderPath, FolderFlag)
                                            if FolderPath="" then
                                                    if FolderFlag <> 0 then
                                                            msgbox _
                                                                    "Nous ne savons pas traiter les dossiers spéciaux..." & vbcrlf &_
                                                                    "Veuillez passer par la racine du lecteur.", 48, "~= L'HDD Ménage =~"
                                                    end if
                                                    FolderChoice FolderPath,FolderFlag
                                                    BoucleFolder FolderPath,FolderFlag
                                            end if
                                    End Function
                                    
                                    function xplor_rep (lechemin, nbrdel)
                                            on error resume next 'pour éviter les " Permission : accès refusé ".
                                            dim orep, osubrep, ofile
                                            set orep = FSO.getfolder(lechemin)
                                            set osubrep = orep.subfolders
                                            		
                                            for each ofile in osubrep
                                                    xplor_rep ofile.path, nbrtemp
                                            next
                                            
                                            dim orepfnd, osubfile, osubfdat, gettemp
                                            set orepfnd = FSO.getfolder(lechemin)
                                            set osubfile = orepfnd.files
                                            
                                            for each osubfdat in osubfile
                                                    gettemp = right(osubfdat, 4)
                                                    
                                                    if gettemp = ".tmp" then
                                                            FSO.DeleteFile look, True
                                                            nbrdel = nbrdel + 1
                                                    end if
                                                    
                                            next
                                    end function
                            

                            '=======================================================================
                            ' MAIN
                            '=======================================================================
                                    BoucleFolder FolderPath,FolderFlag
                                    	
                                    Res = MsgBox _
                                            ("Les fichiers .tmp vont être supprimés de " & FolderPath & vbcrlf &_
                                             "Etes-vous sûr ?" ,36,"~= HDD Ménage =~")
                                    Select Case Res
                                            Case VbYes
                                                    msgbox _
                                                            "Cette opération peut prendre plusieurs minutes, selon la taille de votre système..." & _
                                                                    vbcrlf & vbcrlf & _
                                                            "Vous serez averti à la fin du processus",64, "~= L'HDD Ménage =~"
                                                    xplor_rep FolderPath,nbrtemp
                                                    msgbox _
                                                            nbrtemp & " fichier(s) virtuellement supprimé(s) de " & FolderPath &_
                                                                     " et ses sous-dossiers." & vbCrLf & vbcrlf &_
                                                            "A bientôt.",16,"~= L'HDD Ménage =~"
                                            Case vbNo
                                                    wscript.quit
                                    End Select