[VBS] Ouvrir un lecteur spécifique.

Signaler
Messages postés
109
Date d'inscription
mardi 10 janvier 2006
Statut
Membre
Dernière intervention
14 février 2014
-
Messages postés
6
Date d'inscription
vendredi 13 février 2004
Statut
Membre
Dernière intervention
30 juillet 2008
-
Hello,
 
Je veux faire un script qui affiche une fenêtre demandant si il faut synchroniser les fichiers sur le lecteur D:\ de mon disque dur. Si la réponse est "Oui" la synchronisation se fait sans problème. Si la réponse est "Non" par contre ça ne fonctionne pas.
 
Ce que fait ou devrait faire le code ci-dessous, c'est tout simplement ouvrir la clé USB ou se trouve le script comme si on avait fait un click-droit "Explorer", mais ça ne fonctionne pas... j'espère que quelqu'un pourra m'aider
 


Code :

<ol class="olcode" id="code1">
<li>Dim oFso
</li>
<li>Dim sDrive
</li>
<li>Dim oSshell
</li>
<li>
</li>
<li>Set oFso= CreateObject("Scripting.FileSystemObject" )
</li>
<li>Set oShell= WScript.CreateObject("Shell.Application" )
</li>
<li>
</li>
<li>response=msgbox("Voulez-vous synchroniser les fichiers personnels avec votre ordinateur?", vbQuestion+vbYesNo, "Synchroniser?" )
</li>
<li>
</li>
<li>
</li>
<li>
if response=6 then
</li>
<li>
</li>
<li>Const OverWriteFiles = TRUE</li>
<li>
</li>
<li>Set objFSP = CreateObject("Scripting.FileSystemObject" )
</li>
<li>objFSP.CopyFolder "\\Autorun", "D:\Personnel\MEMORYSTICK", OverWriteFiles
</li>
<li>
</li>
<li>objFSP.CopyFolder "\\Autorun", "D:\Personnel\MEMORYSTICK", OverWriteFiles
</li>
<li>
</li>
<li>objFSP.CopyFolder "\\Backup", "D:\Personnel\MEMORYSTICK", OverWriteFiles
</li>
<li>
</li>
<li>objFSP.CopyFolder "\\Koniambo", "D:\Personnel\MEMORYSTICK", OverWriteFiles
</li>
<li>
</li>
<li>objFSP.CopyFolder "\\Personnel", "D:\Personnel\MEMORYSTICK", OverWriteFiles
</li>
<li>
</li>
<li>objFSP.CopyFolder "\\Software", "D:\Personnel\MEMORYSTICK", OverWriteFiles
</li>
<li>
</li>
<li>objFSP.CopyFolder "\\autorun.inf", "D:\Personnel\MEMORYSTICK", OverWriteFiles
</li>
<li>
</li>
<li>Else
</li>
<li>
</li>
<li>For Each sDrive In oFso.Drives
</li>
<li>         If Not sDrive="A:" then
</li>
<li>            If oFso.FolderExists(sDrive & "\aKaii" ) Then
</li>
<li>               oShell.Open sDrive
</li>
<li>               Exit For           
</li>
<li>            End If
</li>
<li>         End If
</li>
<li>Next
</li>
<li>
</li>
<li>end if</li>
</ol>



Le script se relance à chaque fois que je click "Non", ca veut dire qu'il ouvre bien la clé USB, mais qu'il exécute automatiquement l'autorun => cercle perpétuel...

3 réponses

Messages postés
1854
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
24 juin 2018
26
 Bonjour,

Il faut utiliser un CommonDialog pour afficher le répertoire souhaité sur la clé USB.

exemple:

Option Explicit
Dim oFso, oShell
Dim sDrive, sResult
Dim var1, var2, var3

var1 = "\aKaii"   'choix du folder
var2 = "Selection fichier"
var3 = "|*.*|"   'tous les fichiers

Set oFso = CreateObject("Scripting.FileSystemObject")
Set oShell= WScript.CreateObject("Shell.Application" )
' DriveType:
' 0: "Inconnu"
' 1: "Amovible"
' 2: "Fixe"
' 3: "Réseau"
' 4: "CD-ROM"
' 5: "Disque virtuel"

For Each sDrive in oFso.Drives
    If sDrive.DriveType = 1 And sDrive.IsReady Then
       If oFso.FolderExists(sDrive & var1) Then
          MsgBox "DriveLetter:  " & sDrive.DriveLetter & vbCrLf & _
                 "VolumeName:  "  & sDrive.VolumeName  
          sResult = BrowseForFile(sDrive & var1, var2 & var3)
          Exit For
       End if
    End If
Next

MsgBox sResult

Set oFso = Nothing
Set oShell = Nothing

'-----------------------------------------
Function BrowseForFile(strPath, strFilter)
   Dim oDialog, intResult
   Set oDialog = CreateObject("UserAccounts.CommonDialog")
   oDialog.Filter = strFilter
   oDialog.InitialDir = strPath
   oDialog.Flags = &H80000 + &H4 + &H8   'position de la fenêtre
   intResult = oDialog.ShowOpen  
   BrowseForFile = oDialog.FileName 'récupération du nom du fichier sélectionné
End Function

"if response=6 then" peut être remplacé par  "if response=vbYes then"

jean-marc
Messages postés
109
Date d'inscription
mardi 10 janvier 2006
Statut
Membre
Dernière intervention
14 février 2014

Hello Jean-Marc,

Je n'ai pas envie d'ouvrir une fenetre de dialog pour choisir d'explorer la clef USB, je veux juste que si la réponse est "Non" il ouvre la clef comme si il n'y avait pas d'autorun.
J'espère que j'ai bien expliqué ce que je voulais faire.

Merci
Messages postés
6
Date d'inscription
vendredi 13 février 2004
Statut
Membre
Dernière intervention
30 juillet 2008

bonjour,

utilise un turc dans le genre :

reponse = MsgBox ("ton text",vbYesNo+Vbquestion,"test")
select case reponse
          case VbYes : 
                  <ton code>
          case VbNo:
                  <ton code>
end select

normalement se devrait fonctionnné (enfin si j'ai bien compris se que tu voulais faire)