2 votes

Exécution d'un programme exe à partir de C# avec des arguments contenant des espaces

Cette question me laisse perplexe. J'essaie d'exécuter un exe à partir de C# en utilisant system.diagnostics mais il ne transmet pas mes arguments correctement et l'exe tombe en panne.

Il divise le chemin après le mot "ici" (voir ci-dessous) en raison de l'espace qu'il contient.

Quelqu'un sait-il comment contourner ce problème sans renommer le répertoire (ce qui n'est pas envisageable pour moi) ?

Cela fonctionne à partir de la ligne de commande :

" C:\Users\me\Desktop\myexternalexe\myexternalexe.exe " commentaires " \192.168.1.1\a\here est le problème \c\d\ "

Cela ne fonctionne pas avec Visual Studio :

Process myexternalexe = new Process();

myexternalexe.StartInfo.FileName = @"C:\Users\me\Desktop\myexternalexe\myexternalexe.exe";
myexternalexe.StartInfo.Arguments = @"comments \\192.168.1.1\a\here is the problem\c\d\";

myexternalexe.Start();

7voto

Tim Rogers Points 9956

Mais vous avez omis les guillemets de la version C#. Cela devrait être :

myexternalexe.StartInfo.Arguments = @"comments ""\\192.168.1.1\a\here is the problem\c\d\""";

1voto

Prakash Kalakoti Points 1224

Avez-vous vérifié

cette

Dans votre cas, la procédure suivante devrait fonctionner.

 string folderName = @"\\192.168.1.1\a\here is the problem\c\d\";
 myexternalexe.StartInfo.Arguments= @"comments" + " \"" + folderName  +"\"";

0voto

InBetween Points 6162

Avez-vous essayé ?

 alexe.StartInfo.Arguments = "comments \"\\\\192.168.1.1\\a\\here is the problem\\c\\d\\\"";

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X