IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBScript Discussion :

Executer un programme + patienter + clé usb


Sujet :

VBScript

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Novembre 2008
    Messages : 24
    Par défaut Executer un programme + patienter + clé usb
    Tout d'abord bonjour à tous

    Voici mon problème

    Mon entreprise à besoin de créer une clé USB pour permettre à nos clients de sauvegarder un dossier bien précis sur cette même clé

    La procédure se passe sur des écrans tactiles et devrait se dérouler de la manière suivante

    -insertion de la clé
    -lancement de la sauvegarde
    -à la fin de la sauvegarde ouverture de la fenêtre de déconnexion des clé usb

    Pour ce faire j'ai donc choisi d'utiliser:

    Une clé USB d'1go (toute simple)
    Le logiciel Cobian Backup

    Jusqu'à la rien de compliqué

    J'ai modifié mon autorun.inf tel que

    °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    [Autorun]
    label=Save MonDossier
    icon=Monlogo.ico
    shellexecute=wscript.exe "d:\Cobian.vbs"
    action=Lancer la sauvegarde de MonDossier
    °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°

    Je pars sur un VBS car en faisant de nombreux test en batch je me suis rendu que la déconnexion de la clé était impossible à faire avec un seule fichier (même si celui ci se trouve sur le HDD)

    Donc je crée mon VBS tel que

    °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    ' message d'acceuil
    msgbox "Bienvenu sur l'utilitaire de sauvegarde de DINO",vbinformation,"Save DINO"
    ' validation du lancement de la sauvegarde
    save = msgbox("Voulez-vous lancer la sauvegarde de DINO ?",vbYesNo,"Save DINO")
    if save = vbyes then
    		dim shell
    		set shell=createobject("wscript.shell")
    		shell.run ""C:\Program Files\Cobian Backup 9\Cobian.exe" "list:C:\Program Files\Cobian Backup 9\DB\ETC.lst" -bu -nogui -autocloset"
     
    SUITE ATTENDU
     
    	else
    end if
    °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°

    Seulement certain problème me bloque je viens de passer la matiné à chercher un peu tout et le projet est très urgent donc ce qu'il me manque c'est

    1) la commande

    shell.run ""C:\Program Files\Cobian Backup 9\Cobian.exe" "list:C:\Program Files\Cobian Backup 9\DB\ETC.lst" -bu -nogui -autocloset"

    ne fonctionne pas à cause du "9" je pense pourtant je pensais que celà passé si l'on mettait ""mon dossier a des espaces et des 1 2 3"" mais apparement non

    2) durant le lancement de la sauvegarde les commutateurs suivant

    "list:C:\Program Files\Cobian Backup 9\DB\ETC.lst" -bu -nogui -autocloset"

    permette de tout automatiser sans que rien n'apparaisse donc j'aimerais qu'une fois la commande

    shell.run ""C:\Program Files\Cobian Backup 9\Cobian.exe" "list:C:\Program Files\Cobian Backup 9\DB\ETC.lst" -bu -nogui -autocloset"

    lancé et durant le déroulement de la sauvegarde une msgbox s'ouvre avec "ATTENDRE" et qu'elle se ferme automatiquement à la fin

    3) J'aimerais finalement ouvrir la fenêtre de déconnexion des clé usb avec la commande

    shell.run "%windir%\system32\Rundll32.exe shell32.dll,Control_RunDLL HotPlug.dll"

    et durant cette même procédure terminé mon VBS pour qu'il n'ait plus d'écriture sur ma clé et que je puisse la déconnecter

    (JE SOUHAITE ABSOLUMENT pouvoir retirer ma clé usb en toute sécurité car une perte de donnée sur cette clé serait problématique et que nous tournons sur un environnement aussi bien W2K que WXP)

    J'espere que ma requete est clair je poursuis mes recherches en attendant vos réponses

    Merci d'avance

  2. #2
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Par défaut
    1) la commande

    shell.run ""C:\Program Files\Cobian Backup 9\Cobian.exe" "list:C:\Program Files\Cobian Backup 9\DB\ETC.lst" -bu -nogui -autocloset"

    ne fonctionne pas à cause du "9" je pense pourtant je pensais que celà passé si l'on mettait ""mon dossier a des espaces et des 1 2 3"" mais apparement non
    Pour assurer le coup construit ta requête ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    dim run, exe, arg
    exe = ""C:\Program Files\Cobian Backup 9\Cobian.exe""
    arg = ""list:C:\Program Files\Cobian Backup 9\DB\ETC.lst""
    arg = arg & " -bu -nogui -autocloset"
    run = exe & " " & arg
    shell.run run
    ou directement cela

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    shell.run """C:\Program Files\Cobian Backup 9\Cobian.exe"" ""list:C:\Program Files\Cobian Backup 9\DB\ETC.lst"" -bu -nogui -autocloset"
    Le caractère d'échappement en VBS étant "


    2) durant le lancement de la sauvegarde les commutateurs suivant

    "list:C:\Program Files\Cobian Backup 9\DB\ETC.lst" -bu -nogui -autocloset"

    permette de tout automatiser sans que rien n'apparaisse donc j'aimerais qu'une fois la commande

    shell.run ""C:\Program Files\Cobian Backup 9\Cobian.exe" "list:C:\Program Files\Cobian Backup 9\DB\ETC.lst" -bu -nogui -autocloset"

    lancé et durant le déroulement de la sauvegarde une msgbox s'ouvre avec "ATTENDRE" et qu'elle se ferme automatiquement à la fin
    Pour attendre la fin d'un process utilise l'option True avec run :
    http://vb.developpez.com/faqvbs/?page=IV.1#wshRun

    Pour ta fenêtre, tout ce que je peux te proposer c'est de lancer un second script qui fait un msgbox (ici je lance notepad), ou un wscript echo.
    J'utilise l'objet Win32_Process pour l'exécuter pour récupérer le PID et pouvoir le tuer après.
    Lance ce script avant de lancer ton programme Cobian.
    Je n'ai pas de solution pour empêcher l'utilisateur de fermer cette fenêtre.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    strComputer = "."
    strCommand = "notepad.exe" 
    Set objWMIService = GetObject("winmgmts:" _
        & "{impersonationLevel=impersonate}!\\" _
        & strComputer & "\root\cimv2")
     
    ' Create Notepad process
    Set objProcess = objWMIService.Get("Win32_Process")
    intReturn = objProcess.Create _
        (strCommand, Null, Null, intProcessID)
    Puis tues ton programme une fois l'autre programme terminé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    strComputer = "."
    Set objWMIService = GetObject("winmgmts:" _
        & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
     
    Set colProcessList = objWMIService.ExecQuery _
        ("Select * from Win32_Process Where PID = '" & intProcessID & "'")
    If colProcessList.count > 0   Then
       For Each objProcess in colProcessList
           objProcess.Terminate()
       Next
    End If
    (Non tester, mais j'ai au par avant déjà fait un code identique, je ne l'ai juste plus sous les yeux, donc le pourais me tromper sur PID (ProcessID), minuscule, majuscule, ... Tu peux le faire avec Name et le nom du process, mais tu as 2 vbs de lancé qui ont le même nom)

    3) J'aimerais finalement ouvrir la fenêtre de déconnexion des clé usb avec la commande

    shell.run "%windir%\system32\Rundll32.exe shell32.dll,Control_RunDLL HotPlug.dll"

    et durant cette même procédure terminé mon VBS pour qu'il n'ait plus d'écriture sur ma clé et que je puisse la déconnecter
    Créer en live un fichier texte d'extension vbs dans un repertoire temp du poste local à l'aide de FileSystemObject, et dedans ecrit la commande VBS pour déconnecter la clé USB (+ un slip au début du script), et lance le à partir du script maitre qui ne fait rien d'autre après (donc se ferme), voir tu le force à sortir :
    http://vb.developpez.com/faqvbs/?page=II.1#vbsQuit

    Edit :
    Nous traitons tous les posts avec la même priorité donc inutile de signaler que c'est urgent ou non. Si nous ne répondons pas, c'est que nous n'avons pas le temps, ou nous ne savons pas (rare qu'il n'y ait pas au moins une personne avec une idée si ce n'est une solution).

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Novembre 2008
    Messages : 24
    Par défaut
    Merci beaucoup Ced600

    je m'en vais de ce pas tester tout ça

    (p.s:quand je disais que j'étais pressé c'était pas contre vous c'était pour dire que je sais que je peux tout trouver sur google mais j'ai pas le temps de tout chercher donc quand j'ai vu la lenteur de ma progression ce matin j'ai préféré poster ça en continuant mes tests et recherches)

    Je vous tiens au courant pour la suite

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Novembre 2008
    Messages : 24
    Par défaut
    Après modification du cahier des charges et suite à plusieurs test je vous montre ce que j'ai fais

    Autorun.inf
    °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    [Autorun]
    label=Save Dino
    icon=logoetc.ico
    shellexecute=wscript.exe "C:\Program Files\Cobian Backup 9\Cobian.vbs"
    action=Lancer la sauvegarde
    °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
    Cobian.vbs
    °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    ' message d'acceuil
    msgbox "Bienvenu sur l'utilitaire de sauvegarde de DINO",vbinformation,"Save DINO"
    ' validation du lancement de la sauvegarde
    save = msgbox("Voulez-vous lancer la sauvegarde de DINO ?",vbYesNo,"Save DINO")
    if save = vbyes then
    		Set WshShell = WScript.CreateObject("WScript.Shell")
    		Return = WshShell.Run("""C:\Program Files\Cobian Backup 9\Dino.bat" , 1, true)
    		MsgBox "Fin de la sauvegarde",vbinformation,"Save DINO"
    		MsgBox "Pensez à retirer la clé USB en toute sécurité",vbexclamation,"ATTENTION !"
    	else
    end if
    °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
    Dino.bat
    °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    @echo off
    echo Sauvegarde en cours
    "C:\Program Files\Cobian Backup 9\Cobian.exe" "list:C:\Program Files\Cobian Backup 9\DB\ETC.lst" -bu -nogui -autoclose
    °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
    USB.lnk
    °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
    %windir%\system32\Rundll32.exe shell32.dll,Control_RunDLL HotPlug.dll
    °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°

    Grâce à celà le .bat me permet d'avoir le message qui reste le temps de la sauvegarde et le .lnk placé sur le bureau sur lequel cliquera le client à la fin de la sauvegarde permet qu'il n'y ait plus d'écriture sur la clé USB

    Je sais que c'est loin de ce que vous m'avez conseillé mais je devais le finir rapidement donc j'ai contourné les problèmes et je me pencherais sur les solutions de Ced600 hors travail pour comprendre comment tout faire en VBS

    Voilà cette solution est compatible W2K WXP WVISTA

    Je tiens à dire un grand merci à Ced600 pour la pertinence de sa réponse

  5. #5
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Par défaut
    Bah moi je dit si cela marche, ce n'est pas plus mal, et la façon de faire n'est pas moins bien que celle que je propose.

    En soit je ne connais pas d'affichage fenêtre sans coupure du script.
    Tu peux juste faire de l'affichage console avec wscript.echo à condition de lancer le script avec cscript.
    Normalement cela t'affiche à la console le texte et cela passe à la suite.

    Note que j'ai fait une erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    dim run, exe, arg
    exe = ""C:\Program Files\Cobian Backup 9\Cobian.exe""
    arg = ""list:C:\Program Files\Cobian Backup 9\DB\ETC.lst""
    arg = arg & " -bu -nogui -autocloset"
    run = exe & " " & arg
    shell.run run
    C'est faux

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    dim run, exe, arg
    exe = """C:\Program Files\Cobian Backup 9\Cobian.exe"""
    arg = """list:C:\Program Files\Cobian Backup 9\DB\ETC.lst"""
    arg = arg & " -bu -nogui -autocloset"
    run = exe & " " & arg
    shell.run run
    C'est juste

    En fait le caractère d'échapemment en vbs étant ", il faut double le " pour l'afficher dans la string, et il ne faut pas oublier les 2 guillemets nécessaire à l'ouverture et la fermeture de la portion de code correspondant à du texte (ce que j'avais fait).

    Note : Pour afficher le code dans des cadres comme moi, utilise les balises de code dans l'editeur c'est le symbole #

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. clé usb : execution de programme malveillant
    Par Zwiter dans le forum Sécurité
    Réponses: 16
    Dernier message: 20/04/2009, 14h04
  2. Executer un programme, et interargir avec
    Par TheDarkLewis dans le forum Windows
    Réponses: 3
    Dernier message: 19/09/2004, 00h26
  3. [Classpath][execution] executer un programme avec des jar.
    Par LoLoSS dans le forum Général Java
    Réponses: 11
    Dernier message: 26/08/2004, 11h45
  4. [VB6] Exécuter un programme en tant que...
    Par Le_Tolier dans le forum VB 6 et antérieur
    Réponses: 36
    Dernier message: 28/05/2004, 14h53
  5. [Kylix] Probleme d'execution de programmes...
    Par yopziggy dans le forum EDI
    Réponses: 19
    Dernier message: 03/05/2002, 14h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo