Aidez UN gro Boulet en VbScript

Samymi -  
carbon3 Messages postés 471 Statut Membre -
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

  1. kalamit
     
    Bah, et c'est quoi ta question ?
    T'es bien parti, la !

    Kalamit,
    Parle à ma culasse, mon carter est malade. :)
    0
  2. Samymi
     
    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...
    0
  3. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  4. kalamit
     
    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. :)
    0
  5. Samymi
     
    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 !!!
    0
  6. Samymi
     
    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 !
    0
  7. kalamit
     
    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. :)
    0
  8. Samymi
     
    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 ?
    0
  9. kalamit
     
    Ben, si tu mets rien, le programme se termine normalement, et ca quitte tout seul !

    Kalamit,
    Parle à ma culasse, mon carter est malade. :)
    0
  10. Samymi
     
    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 ?
    0
  11. kalamit
     
    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. :)
    0
  12. kalamit
     
    Apparement, le mot clé stop a l'air de fonctionner...

    Kalamit,
    Parle à ma culasse, mon carter est malade. :)
    0
  13. Samymi
     
    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 ?
    0
  14. Samymi
     
    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 !!!!

    ?????
    0
    1. CRO_PROG Messages postés 5 Statut Membre 17
       
      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
      0
  15. carbon3 Messages postés 471 Statut Membre 73
     
    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
    
    0