Analyser les arguments de ligne de commande en C#
-
Utilisez le
CommandLineParser
pour analyser les arguments enC#
-
Utiliser l’instruction
If-Else
pour analyser les arguments enC#
Cet article présentera comment analyser les arguments de ligne de commande à l’aide du langage de programmation C#. Nous étudierons deux approches et stratégies pour atteindre cet objectif.
Le format standard pour une commande est commandName -argumentName argumentValue
, où commandName
est le nom de la commande. Prenez, par exemple, la commande bien connue apt
utilisée sous Linux.
apt install exiftool
Utilisez le CommandLineParser
pour analyser les arguments en C#
Au lieu d’analyser manuellement les commandes et les arguments, vous pouvez utiliser une bibliothèque comme CommandLineParser
pour effectuer la tâche à votre place, vous n’avez donc pas à vous en soucier. Votre concentration principale peut alors consister à mettre la logique de commande en action.
Nous allons vous montrer comment développer du code permettant à CommandLineParser
de recevoir des arguments et d’exécuter vos commandes de la manière suivante.
static void Main(string[] args) {
Parser.Default.ParseArguments<UpdateCommand, InstallCommand>(args).WithParsed<ICommand>(
t => t.Execute());
}
Tout d’abord, vous devez installer le package NuGet
, ce qui peut être fait en exécutant la commande suivante.
Install-Package CommandLineParser
Créez une classe ou une interface de base pour vos commandes si elles n’existent pas déjà. En revanche, construire une interface vous permet de n’utiliser qu’un seul .WithParsed<ICommand>
dans votre code.
public interface ICommand {
void Execute();
}
UpdateCommand
doit être ajouté en premier, puis l’attribut Verb
. Ce paramètre demande à CommandLineParser
de produire un objet UpdateCommand
lorsqu’il rencontre le mot update
.
[Verb("update", HelpText = "updates your system to the newest version")]
public class UpdateCommand : ICommand {
public void Execute() {
Console.WriteLine("Updating the system");
}
}
Mettez la InstallCommand
à ce moment précis et le paramètre message
de la commande install
. Incluez la propriété message
et l’attribut Option
en conséquence directe.
Cet attribut fournit au CommandLineParser
des instructions sur la conversion des arguments en propriétés.
[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}");
}
}
Enfin, passez les arguments à CommandLineParser
en tant que paramètres de type pour les analyser.
Utiliser l’instruction If-Else
pour analyser les arguments en C#
Vous trouverez ci-dessous un exemple d’analyse des arguments de la ligne de commande.
static void Main(string[] args) {
if (!(args.Length != 0)) {
Console.WriteLine("arguments not correct");
return;
}
}
Le but de la ligne qui lit static void Main(string[] args)
est d’obtenir les arguments de la ligne de commande et de les enregistrer dans le tableau args
. La ligne if (!(args.Length != 0))
vérifie si la longueur totale des arguments est 0 ou non.
Si la longueur est 0, cela indique qu’aucun argument de ligne de commande n’a été fourni au programme.
La ligne qui lit Console.WriteLine("arguments not correct");
indique à l’écran que les arguments sont incorrects afin que l’utilisateur saisisse le nombre correct d’arguments la prochaine fois.
var c = args[0];
La var c = args[0];
ligne crée le nom de variable c
et stocke le premier argument passé dans la ligne de commande.
if (c == "update") {
update();
} else if (c == "install") {
if (args.Length == 2)
install(args[1]);
} else {
Console.WriteLine("Invalid Command");
}
Nous déterminerons si oui ou non la variable c
est munie de l’argument update
au début des arguments envoyés via la ligne de commande. La fonction update
est appelée si la réponse est affirmative.
La condition install
vérifie si la variable c
inclut l’argument install
au début de celle-ci, et si c’est le cas, elle détermine si elle doit ou non avoir deux arguments en comparant la longueur des args
variable à 2.
Par conséquent, nous vérifions que dans la liste des paramètres des paramètres qui lui sont donnés via la ligne de commande.
Si la longueur de args
est de 2, il appelle la fonction install()
avec args[1]
comme paramètre.
Le cas autrement
sera exécuté chaque fois qu’aucun des autres cas ne correspondra, auquel cas il s’affichera à l’écran Invalid Command
.
static void update() {
Console.WriteLine("updating your system");
}
La fonction update()
affiche "updating your system"
lorsque la update
est envoyée en argument.
static void install(string message) {
Console.WriteLine($"installing the program {message}");
}
La fonction install()
affiche "installing the program {message}"
lorsque le install
est envoyé en argument.
Code source complet :
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