7
votes

Passage des arguments en ligne de commande


2 commentaires

Dupliqué possible de Escape Commande Arguments en C #


La plupart des réponses dans cette question sont erronées, mauvaises, incomplètes ou moins dangereuses lorsque les arguments contiennent des caractères spéciaux tels que des citations ou des espaces blancs. S'il vous plaît voir Cette réponse


3 Réponses :


-5
votes

Veuillez essayer ceci:

        var arr = new string[] {"Item title", "New task", "22", "High Priority"};
        const string path = @"C:\Projects\Test\test.exe";
        const string argsSeparator = " ";
        string args = string.Join(argsSeparator, arr);

        Process.Start(path, args);


6 commentaires

Et comment saura-t-il si l'espace fait partie de l'argument ou du séparateur? :RÉ


@Grzegorzwilczura alors peut-être que string args = string.join ("", arr.select (e => "\" "+ e +" \ "")); ?


@Grzegorzwilcura Si le séparateur n'est pas de l'espace, il peut utiliser un autre séparateur :) change simplement un const. Merci pour le commentaire.


Si cela fait "correctement" et travailler pour Arguments arbitraires , c'est un peu plus compliqué . Fondamentalement, vous devez appliquer les règles de Commandlinetoargv mais en sens inverse. Voir aussi cette réponse .


Cette réponse est tellement erronée. S'il vous plaît voir Cette réponse


Ne fais jamais ça. Sinon, nous ne vous débarrasserons jamais de toutes ces applications SH * TTY qui ne peuvent même pas partir d'un répertoire avec des espaces dans le chemin.



-3
votes

Ce n'est pas possible de passer une array comme argument, vous pouvez transmettre une chaîne avec séparateur de virgule:

 ProcessStartInfo info = new ProcessStartInfo();
 info.Arguments = "Item title,New task,22,High Priority"


0 commentaires

-3
votes

Une option consiste à placer la matrice dans une chaîne afin qu'elle soit considérée comme un argument par la méthode. Dans votre méthode, vous pouvez ensuite analyser cet argument. Quelque chose comme: xxx pré>

Vous pouvez utiliser votre matrice existante en faisant: p> xxx pré>

à l'intérieur de votre méthode, faites: p>

var values = argument.Split(',').Select(x => x.Trim());


0 commentaires