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 :

Problème exécution diskpart dans un fichier VBS


Sujet :

VBScript

  1. #1
    Nouveau membre du Club
    Étudiant
    Inscrit en
    Septembre 2008
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2008
    Messages : 60
    Points : 32
    Points
    32
    Par défaut Problème exécution diskpart dans un fichier VBS
    Bonjour,

    J'ai créé un script VBS qui doit exécuter un diskpart :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Set oShell = WScript.CreateObject("WScript.Shell")
    Set oFSO = CreateObject("Scripting.FileSystemObject")
     
    strCurrentDir = oShell.CurrentDirectory
    strDiskpart = oShell.ExpandEnvironmentStrings("%windir%\system32")
     
    strDispartCmdm = strDiskpart & "\diskpart.exe /s " & Chr(34) & strCurrentDir & "\script.ini" & Chr(34) & ">" & Chr(34) & strCurrentDir &  "\output.txt" & Chr(34)
     
    oShell.Run strDispartCmdm, 1, True
    Ce code supprime le fichier output.txt s'il existe, sinon il exécute la commande diskpart avec en variable le contenu du fichier script.ini, dont voici le contenu, et est censé me renvoyer le résultat dans le fichier output.txt.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    diskpart
    select volume D
    detail disk
    Le problème est que ça ne marche pas : il m'affiche rapidement une invite de commande et le ferme immédiatement. Le fichier output.txt n'est qu'en à lui pas créé.

    Est-ce que vous auriez une solution ?

    Merci

  2. #2
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    place toi dans une fenêtre de commande pour lancer ce script et ainsi voir le message d'erreur ...

  3. #3
    Rédacteur
    Avatar de omen999
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 296
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 296
    Points : 3 549
    Points
    3 549
    Par défaut
    sans oublier de se placer dans le répertoire où était lancé ton script
    nomen omen, nemo non omen - Consultez la FAQ VBScript et les cours et tutoriels VBScript
    le plus terrible lorsqu'une voiture renverse un piéton, c'est que ce sont les freins qui hurlent. (ramón)
    pas de questions techniques par mp

  4. #4
    Nouveau membre du Club
    Étudiant
    Inscrit en
    Septembre 2008
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2008
    Messages : 60
    Points : 32
    Points
    32
    Par défaut
    Merci pour vos réponses.

    Je me suis placé dans le chemin où est mon script et j'ai rentré ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    C:\Windows\System32\diskpart.exe /s "C:\Users\toto\Mes documents\tutu\Scripts VBS\script.txt">"C:\Users\toto\Mes documents\tutu\Scripts VBS\output.txt"
    C'est ce qu'est censé faire le script VBS.

    Je n'ai pas d'erreur dans l'invite de commande, mais voici ce que je vois dans le fichier output.txt qu'il me retourne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Microsoft DiskPart version 6.1.7600
    Copyright (C) 1999-2008 Microsoft Corporation.
    Sur l'ordinateur : XXXXXXXXXX
     
    DiskPart n'a pas pu ouvrir un lire le fichier script.
    V‚rifiez que le fichier que vous avez sp‚cifi‚ existe.
    Merci

  5. #5
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    rajoute des espaces autour du "redirecteur"
    [CODE...]txt " > " C:\U..[/CODE]
    pour lancer le script en ligne de commande tu saisie :

    MonScript.vbs étant le nom de ton fichier script...

  6. #6
    Nouveau membre du Club
    Étudiant
    Inscrit en
    Septembre 2008
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2008
    Messages : 60
    Points : 32
    Points
    32
    Par défaut
    Bonjour,

    J'ai réessayé la ligne de commande

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    C:\Windows\System32\diskpart.exe /s "C:\Users\toto\Mes documents\tutu\Scripts VBS\script2.ini" > "C:\Users\toto\Mes documents\tutu\Scripts VBS\output.txt"
    et il me retourne bien le fichier output.txt avec le résultat.

    Par contre si je le réessaye avec le script vbs (je précise que j'exécute bien le script à partir d'un invite de commande ouvert avec les droits admin sur Win 7), ça ne marche pas. J'ai mis un MsgBox pour voir ce que me retourne la variable strDispartCmdm, et ça correspond bien à ce que je met manuellement dans un invite de commande.

    J'ai rajouté un cmd /K dans la variable strDispartCmdm pour forcer l'apparition de la fenêtre. Résultat : la fenêtre s'ouvre, affiche un prompt, et rien.

    Je pense qu'il y a un problème lors de l'exécution de la ligne de commande présente dans la variable.

    C'est vraiment bizarre

  7. #7
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    Bonsoir,
    je comprends pas ou tu as rajouter ton cmd /K ..? tu n'en as pas besoin .. ?
    si tu lance ton script depuis une fenêtre "ligne de commande" tu n'as pas à ouvrir de fenêtre supplémentaires..

  8. #8
    Nouveau membre du Club
    Étudiant
    Inscrit en
    Septembre 2008
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2008
    Messages : 60
    Points : 32
    Points
    32
    Par défaut
    Le cmd /K je l'ai ajouté dans mon script vbs, pas quand je tape la commande à la main.

    J'ai ajouté ce paramètre dans le script parce qu'il ouvrait et fermait la fenêtre en un instant, donc je ne voyais pas ce qu'il faisait, et s'il y avait des erreurs.

  9. #9
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    c'est bien ce que je dis ... tu n'as pas besoin du cmd /K ... il te suffit de "lancer le script à la main" ... comme tu le fais pour ta commande...

  10. #10
    Nouveau membre du Club
    Étudiant
    Inscrit en
    Septembre 2008
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2008
    Messages : 60
    Points : 32
    Points
    32
    Par défaut
    Merci à tous pour votre aide, j'ai réussi à régler le problème.

    En fait, il ne fallait pas mettre de "else" dans la condition "if" : si le fichier output.txt existait, il le supprimait mais il ne rentrait pas dans le "else" (logique).

    Voila. Je met le poste en résolu .

  11. #11
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    Citation Envoyé par Sprsrini Voir le message
    Merci à tous pour votre aide, j'ai réussi à régler le problème.

    En fait, il ne fallait pas mettre de "else" dans la condition "if" : si le fichier output.txt existait, il le supprimait mais il ne rentrait pas dans le "else" (logique).

    Voila. Je met le poste en résolu .
    ..... il n'y as ni if ni esle dans ton code

  12. #12
    Nouveau membre du Club
    Étudiant
    Inscrit en
    Septembre 2008
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2008
    Messages : 60
    Points : 32
    Points
    32
    Par défaut
    Ah oui^^

    Voici mon code final:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Set oShell = WScript.CreateObject("WScript.Shell")
    Set oFSO = CreateObject("Scripting.FileSystemObject")
     
    strCurrentDir = oShell.CurrentDirectory
    strDiskpart = oShell.ExpandEnvironmentStrings("%windir%\system32")
     
    periph_name = strCurrentDir & "\name.txt"
    If oFSO.FileExists(periph_name) Then
    	oFSO.DeleteFile periph_name,True
    End If
     
    	strDispartCmdm = "cmd /C" & strDiskpart & "\diskpart.exe /s " & Chr(34) & strCurrentDir & "\periph.ini" & Chr(34) & " > " & Chr(34) & strCurrentDir & "\name.txt" & Chr(34)
     
    	oShell.Run strDispartCmdm, 1, True
    La seule chose qui change entre le premier script et celui-ci, c'est le "cmd /C" et la condition "if". Sans le "cmd /C" ça ne marche pas.

  13. #13
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    Ok mais il ne sert à rien d'effacer le fichier ... la redirection de la sortie standard (le >) l'efface de toute façon

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

Discussions similaires

  1. Problème retour chariot dans un fichier texte
    Par Redondo dans le forum Windows
    Réponses: 2
    Dernier message: 08/02/2006, 18h23
  2. Problème de lecture dans un fichier xml
    Par Pyra dans le forum Langage
    Réponses: 2
    Dernier message: 18/12/2005, 00h13
  3. [PERL] Problème lecture/écriture dans un fichier
    Par LE NEINDRE dans le forum Langage
    Réponses: 4
    Dernier message: 17/08/2005, 13h15
  4. Problème d'écriture dans un fichier xml
    Par vanoou dans le forum C++Builder
    Réponses: 1
    Dernier message: 13/07/2005, 02h28
  5. Réponses: 2
    Dernier message: 01/06/2004, 12h47

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