¿Cómo es posible analizar argumentos de línea de comandos que se deben interpretar como rutas? args [] contiene cadenas que están unidas de forma automática si se citan, por ejemplo:Análisis de línea de comandos C# de rutas citadas y evitar caracteres de escape
ejemplo.exe uno dos "tres, cuatro"
args[0] = one
args[1] = two
args[2] = three four
Sin embargo, args [] no la propiedad de análisis "C: \ Ejemplo \ "como un argumento. Más bien, proporcionará el argumento como "C: \ Ejemplo" "(con la comilla extra incluida). Esto se debe a la barra diagonal inversa en la ruta que se trata como un carácter de escape y, por lo tanto, a la cita final que el usuario suministró en el comando -line se convierte en parte del argumento
.eg:.
uno ejemplo.exe "C: \ InputFolder" "C: \ OutuptFolder \"
args[0] = one
args[1] = C:\InputFolder"
args[2] = C:\OutputFolder"
un kludge fácil podría ser:
_path = args[i].Replace("\"", @"\");
Sin embargo, estoy seguro de que hay una mejor práctica para esto. ¿Cómo se puede analizar correctamente una línea de comando que incluye rutas, evitando que la matriz args [] se llene incorrectamente con picaduras que se han analizado para caracteres de escape?
NOTA: ¡No me gustaría incluir una biblioteca de análisis de línea de comandos completa en mi proyecto! Solo necesito manejar rutas citadas y deseo hacerlo de una manera "manual". No recomiende NConsoler, Mono o cualquier otra gran biblioteca de análisis de línea de comandos del "fregadero de la cocina".
TAMBIÉN NOTA: Por lo que puedo decir, esta no es una pregunta duplicada. Mientras que otras preguntas se centran en el análisis genérico de línea de comandos, esta pregunta es específica del problema que las rutas introducen cuando partes de ellas se interpretan como secuencias de escape.
¿Dónde está exactamente viendo este personaje extra? Estoy usando el compilador de fragmentos. Aquí está el principal ... cadena s = args [0]; \t \t Console.WriteLine (s); Y funciona como debería. – shahkalpesh
@shahkalpesh: No sé sobre el compilador de fragmentos, pero intente ejecutarlo desde la línea de comandos y suministre a su programa un argumento que termine en \ "(barra invertida-doble citación). Como dijo ebwi, abrí los ojos. –
Lo entiendo ahora. Perdón por no haber entendido correctamente el argumento de entrada. – shahkalpesh