Come è possibile analizzare gli argomenti della riga di comando che devono essere interpretati come percorsi? args [] contiene le stringhe che sono uniti automaticamente se sono quotate, ad esempio:C# Analisi riga di comando dei percorsi citati ed eliminazione dei caratteri di escape
example.exe uno due "tre quattro"
args[0] = one
args[1] = two
args[2] = three four
Tuttavia, args [] non sarà proprietà parse "C: \ Esempio \ "come argomento Piuttosto, fornirà l'argomento come "C: \ Example" "(con la citazione extra inclusa). Ciò è dovuto al backslash nel percorso trattato come carattere di escape e quindi alla citazione finale fornita dall'utente sul comando -line entra a far parte della discussione
.EG:.
uno example.exe "C: \ InputFolder" "C: \ OutuptFolder \"
args[0] = one
args[1] = C:\InputFolder"
args[2] = C:\OutputFolder"
potrebbe essere un ripiego facile:
_path = args[i].Replace("\"", @"\");
Tuttavia, sono sicuro che ci sia una best practice per questo. Come si può analizzare correttamente una riga di comando che include percorsi, impedendo all'array args [] di essere compilato in modo errato con punture che sono state analizzate per i caratteri di escape?
NOTA: Non vorrei includere un'intera libreria di analisi della riga di comando nel mio progetto! Ho solo bisogno di gestire percorsi quotati e desidero farlo in modo "manuale". Si prega di non raccomandare NConsoler, Mono, o qualsiasi altra grande libreria di analisi della riga di comando "kitchen sink".
ANCHE NOTA: per quanto posso dire, questa non è una domanda doppia. Mentre altre domande si concentrano sull'analisi generica della riga di comando, questa domanda è specifica del problema che i percorsi introducono quando parti di esse vengono interpretate come sequenze di escape.
Dove vedi esattamente questo personaggio in più? Sto usando il compilatore snippet. Ecco il principale .. string s = args [0]; \t \t Console.WriteLine (s); E funziona come dovrebbe – shahkalpesh
@shahkalpesh: Non so sul tuo compilatore di snippet, ma prova a eseguirlo dalla riga di comando e fornisci al tuo programma un argomento che termina in \ "(backslash-doublequote.) Come disse ebwi, aprii gli occhi –
Ho capito. Scusa se non ho capito correttamente l'argomento di input – shahkalpesh