0 votes

Démarrer un nouveau processus avec des arguments

J'ai un programme qui reçoit quelque chose comme ceci à partir d'un fichier de paramètres :

"C:\Files\App 1\App.exe" "-param1:true -blah"

Il reçoit tout cela sous la forme d'une seule chaîne, mais l'objet Process en C# a besoin que le programme et les arguments soient transmis séparément. Existe-t-il un moyen simple en C# d'analyser cette chaîne, ou un moyen de transmettre l'instruction telle quelle, sans l'analyser au préalable ?

2voto

Matthew Whited Points 12255

Que pensez-vous de ça ?

var pattern = "\".*?\"";
var regex = new Regex(pattern);
var cmdString = "\"C:\\Files\\App 1\\App.exe\" \"-param1:true -blah\"";

var matches = regex.Matches(cmdString)
                   .OfType<Match>()
                   .Select(m => m.Value.Trim('\"'))
                   .ToArray();

var cmd = matches[0];
var arg = matches[1];

var proc = Process.Start(cmd, arg);
if (proc.Start())
    proc.WaitForExit();

0voto

Travis Heseman Points 4646

Ça devrait être quelque chose comme ça.

Process.Start(new ProcessStartInfo() { FileName = @"C:\\Files\\App 1\\App.exe", Arguments = "-param1:true -blah" });

Si tout se présente sous la forme d'une seule chaîne, vous pouvez effectuer une sous-chaîne sur l'index du premier caractère espace.

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