C# de Ligne de Commande de l'Analyse de Cité Chemins et en Évitant les Caractères d'Échappement

Comment est-il possible d'analyser les arguments de ligne de commande qui doivent être interprétés comme des chemins? args[] contient les chaînes sont automatiquement joint si elles sont citées, par exemple:

example.exe l'un deux trois quatre"

args[0] = one
args[1] = two
args[2] = three four

Cependant, args[] ne sera pas bien analyser "C:\Example\" comme argument. Plutôt, elle fournira à l'argument de la "C:\Example"" (avec le supplément de devis inclus). Cela est dû à la barre oblique inverse dans le chemin d'être traité comme un caractère d'échappement et donc la fin de la citation que l'utilisateur a fourni sur la ligne de commande devient une partie de l'argument.

.e.g:

example.exe un "C:\InputFolder" "C:\OutuptFolder\"

args[0] = one
args[1] = C:\InputFolder"
args[2] = C:\OutputFolder"

Facile quelque chose peut-être:

_path = args[i].Replace("\"", @"\");

Cependant, je suis sûr qu'il y est une bonne pratique pour cela. Comment peut-on analyser correctement une ligne de commande qui comprend chemins d'accès, la prévention de la args[] tableau de mal avoir rempli avec des piqûres qui ont été analysées pour les caractères d'échappement?

NOTE: je ne voudrais pas d'inclure toute une ligne de commande d'analyse de la bibliothèque dans mon projet! J'ai besoin seulement de gérer cité chemins et qui souhaitent le faire dans un "manuel" de la mode. S'il vous plaît ne recommande pas NConsoler, Mono, ou tout autre grand "évier de cuisine de ligne de commande" analyse de la bibliothèque.

ÉGALEMENT NOTE: pour autant Que je peux dire, ce n'est pas une double question. Alors que d'autres questions portent sur le générique de ligne de commande de l'analyse, cette question est spécifique au problème que les chemins de présenter lorsque des pièces sont interprétées comme des séquences d'échappement.

  • Où êtes-vous exactement en voyant ce caractère supplémentaire? J'utilise de l'extrait de compilateur. Ici, c'est le principal.. string s=args[0]; Console.WriteLine(s); Et il fonctionne comme il se doit.
  • Je ne sais pas à propos de votre extrait de compilateur, mais essayez de l'exécuter à partir de la ligne de commande, et de fournir votre programme avec un argument se terminant par \" (barre oblique inverse-apostrophe). Comme ebwi dit, a ouvert les yeux.
  • Je comprends maintenant. Désolé de ne pas comprendre l'argument d'entrée correctement.
  • Changer votre flux de travail à utiliser échappé barres obliques inverses pour les paramètres d'entrée sur la ligne de commande. "\\\\machine\\partage\chemin\\filename\\" comme une alternative pour éviter le problème.
InformationsquelleAutor James | 2009-05-22