[VBS] Ouvrir un lecteur spécifique.

cs_akaii Messages postés 109 Date d'inscription mardi 10 janvier 2006 Statut Membre Dernière intervention 14 février 2014 - 23 juil. 2008 à 06:37
neolego Messages postés 6 Date d'inscription vendredi 13 février 2004 Statut Membre Dernière intervention 30 juillet 2008 - 30 juil. 2008 à 10:24
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

cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
23 juil. 2008 à 11:55
 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
0
cs_akaii Messages postés 109 Date d'inscription mardi 10 janvier 2006 Statut Membre Dernière intervention 14 février 2014
23 juil. 2008 à 23:10
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
0
neolego Messages postés 6 Date d'inscription vendredi 13 février 2004 Statut Membre Dernière intervention 30 juillet 2008
30 juil. 2008 à 10:24
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)
0
Rejoignez-nous