Analizar argumentos de línea de comandos en C#
-
Utilice el
CommandLineParser
para analizar argumentos enC#
-
Utilice la instrucción
If-Else
para analizar argumentos enC#
Esta publicación presentará cómo analizar los argumentos de la línea de comandos usando el lenguaje de programación C#. Investigaremos dos enfoques y estrategias para completar este objetivo.
El formato estándar para un comando es commandName -argumentName argumentValue
, donde commandName
es el nombre del comando. Tomemos, por ejemplo, el conocido comando apt
utilizado en Linux.
apt install exiftool
Utilice el CommandLineParser
para analizar argumentos en C#
En lugar de analizar manualmente los comandos y argumentos, puede usar una biblioteca como CommandLineParser
para realizar la tarea por usted, para que no tenga que preocuparse por eso. Entonces, su concentración principal puede ir a poner en acción la lógica del comando.
Le mostraremos cómo desarrollar un código que permita que CommandLineParser
reciba argumentos y ejecute sus comandos de la manera que se muestra a continuación.
static void Main(string[] args) {
Parser.Default.ParseArguments<UpdateCommand, InstallCommand>(args).WithParsed<ICommand>(
t => t.Execute());
}
Primero, debes instalar el paquete NuGet
, lo cual se puede hacer ejecutando el siguiente comando.
Install-Package CommandLineParser
Cree una clase base o interfaz para sus comandos si aún no existen. Por otro lado, construir una interfaz le permite usar solo un único .WithParsed<ICommand>
en su código.
public interface ICommand {
void Execute();
}
Primero se debe agregar UpdateCommand
, luego el atributo Verb
. Este parámetro indica a CommandLineParser
que produzca un objeto UpdateCommand
cuando encuentre la palabra update
.
[Verb("update", HelpText = "updates your system to the newest version")]
public class UpdateCommand : ICommand {
public void Execute() {
Console.WriteLine("Updating the system");
}
}
Ponga en este mismo momento el InstallCommand
y el parámetro message
del comando install
. Incluir la propiedad Mensaje
y el atributo Opción
como consecuencia directa.
Este atributo proporciona al CommandLineParser
instrucciones para convertir argumentos en propiedades.
[Verb("install", HelpText = "installing your software")]
public class InstallCommand : ICommand {
[Option("message", Required = true, HelpText = "installing the program")]
public string Message { get; set; }
public void Execute() {
Console.WriteLine($"Executing install for the : {Message}");
}
}
Por último, pase los argumentos a CommandLineParser
como parámetros de tipo para analizarlos.
Utilice la instrucción If-Else
para analizar argumentos en C#
A continuación se muestra un ejemplo de análisis de los argumentos de la línea de comandos.
static void Main(string[] args) {
if (!(args.Length != 0)) {
Console.WriteLine("arguments not correct");
return;
}
}
El propósito de la línea que dice static void Main(string[] args)
es obtener los argumentos de la línea de comando y guardarlos en la matriz args
. La línea if (!(args.Length != 0))
comprueba si la longitud de los argumentos totales es 0 o no.
Si la longitud es 0, indica que no se proporcionaron argumentos de línea de comandos al programa.
La línea que dice Console.WriteLine("argumentos no correctos");
muestra en la pantalla que los argumentos son incorrectos para que el usuario ingrese el número correcto de argumentos la próxima vez.
var c = args[0];
La var c = args[0];
line crea el nombre de variable c
y almacena el primer argumento pasado en la línea de comando.
if (c == "update") {
update();
} else if (c == "install") {
if (args.Length == 2)
install(args[1]);
} else {
Console.WriteLine("Invalid Command");
}
Determinaremos si la variable c
se proporciona o no con el argumento actualizar
al principio de los argumentos enviados a través de la línea de comandos. Se llama a la función update()
si la respuesta es afirmativa.
La condición instalar
comprueba si la variable c
incluye el argumento instalar
al principio y, si lo hace, determina si debe tener o no dos argumentos comparando la longitud de los argumentos
. variable a 2.
Por lo tanto, verificamos que dentro de la lista de parámetros de los parámetros que se le dan a través de la línea de comando.
Si la longitud de los args
es 2, llama a la función install()
con args[1]
como parámetro.
El caso si no
se ejecutará siempre que ninguno de los otros casos coincida, momento en el que se imprimirá en la pantalla Comando no válido
.
static void update() {
Console.WriteLine("updating your system");
}
La función actualizar()
imprime "Actualizando su sistema"
cuando se envía la actualización
como argumento.
static void install(string message) {
Console.WriteLine($"installing the program {message}");
}
La función instalar()
imprime "Instalando el programa {mensaje}"
cuando se envía instalar
como argumento.
Código fuente completo:
using System;
class CommandLineParser {
static void Main(string[] args) {
if ((args.Length == 0)) {
Console.WriteLine("arguments not correct");
return;
}
var c = args[0];
if (c == "update") {
update();
} else if (c == "install") {
if (args.Length == 2)
install(args[1]);
} else {
Console.WriteLine("Invalid Command");
}
}
static void update() {
Console.WriteLine("updating your system");
}
static void install(string message) {
Console.WriteLine($"installing the program {message}");
}
}
I'm a Flutter application developer with 1 year of professional experience in the field. I've created applications for both, android and iOS using AWS and Firebase, as the backend. I've written articles relating to the theoretical and problem-solving aspects of C, C++, and C#. I'm currently enrolled in an undergraduate program for Information Technology.
LinkedIn