2017-09-19 7 views
0

J'essaie de démarrer un processus avec deux paramètres qui s'exécuteront correctement à partir d'une fenêtre d'invite de commande cmd. Le problème vient quand j'essaie de le lancer via process.start.Les arguments Process.Start ne fonctionnent pas

Dans la fenêtre cmd, cela ressemble à ceci.

D:\Projects\MyProg.exe "D:\Projects\MyScript.txt" "D:\Projects\MyInputData.txt"

Lorsque je tente de construire les arguments en .NET il met des guillemets doubles autour de la chaîne entière et ressemble à ceci. Le programme ne l'interprète pas comme deux paramètres et s'arrête juste. Si j'ajoute des guillemets autour de chaque argument, il l'interprète encore mal.

Je sais que c'est le problème de MyProg.exe (programme de fournisseur que je ne peux pas changer) mais est-il un moyen d'envoyer cette commande pour que cela fonctionne? Lorsque j'ajoute des doubles guillemets, cela fonctionne, le programme démarre mais a un problème et s'arrête.

myProcess.StartInfo.Arguments = """D:\Projects\MyScript.txt"" ""D:\Projects\MyInputData.txt""" 
+3

Le dernier extrait est la plus correcte, il assure que les espaces dans les noms de chemin réel ne causent pas de problèmes. Donc, vous êtes à "a un problème et s'arrête juste", personne ne peut deviner ce que cela pourrait signifier quand vous ne décrivez pas le problème et montrez ce petit code. –

+0

David Alves, j'aimerais donner plus d'infos mais c'est ce que ça fait. Il n'y a aucune information du processus. Je m'arrête et ne me dit pas pourquoi. Désolé, je ne peux pas être plus descriptif. –

Répondre

0

Je ne suis pas sûr de ce que D:\Projects\MyProg.exe fait, mais exemple suivant travaille. Deux chaînes variables sont déclarées. Les deux chaînes indiquent deux paramètres d'argument que je veux utiliser avec l'exécutable.

Public Class Form1 
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 

    '// Set first file parameter to the executable 
    Dim sourceFileName As String = "source.txt" 
    '// Set second file parameter to the executable 
    Dim targetFileName As String = "target.txt" 

    '// Create a new ProcessStartInfo 
    Dim p As New ProcessStartInfo 

    '// Specify the location of the binary 
    p.FileName = "D:\_working\ConsoleApplication3.exe" 

    '// Use these arguments for the process 
    p.Arguments = " """ & sourceFileName & """ """ & targetFileName & """ -optionalPara" 

    ' Use a hidden window 
    'p.WindowStyle = ProcessWindowStyle.Hidden 

    ' Start the process 
    Process.Start(p) 

    End Sub 
End Class 

Voir capture d'écran résultant:

enter image description here

+0

Cela a-t-il fonctionné? Si une réponse vous a aidé à résoudre votre problème, acceptez-la. –

+0

Merci à help-info.de. Il semble faire comme tu dis. –