• 20 hours
  • Easy

Free online content available in this course.

Paperback available in this course

course.header.alt.is_certifying

You can get support and mentoring from a private teacher via videoconference on this course.

Got it!

Last updated on 11/28/19

La ligne de commande

Log in or subscribe for free to enjoy all this course has to offer!

Sous ce nom un peu barbare se cache une fonctionnalité très présente dans nos usages quotidiens mais qui a tendance à être masquée à l'utilisateur lambda. Nous allons, dans un premier temps, voir ce qu'est exactement la ligne de commande et à quoi elle sert.
Ensuite, nous verrons comment l'exploiter dans notre application avec le C#.

Notez que ce chapitre n'est pas essentiel mais qu'il pourra sûrement vous servir plus tard dans la création de vos applications. 

Qu’est-ce que la ligne de commande ?

La ligne de commande, c’est ce qui nous permet d’exécuter nos programmes. Très présente à l’époque où Windows existait peu, elle a tendance à disparaitre de nos utilisations. Mais pas le fond de son fonctionnement.

En général, la ligne de commande sert à passer des arguments à un programme. Par exemple, pour ouvrir un fichier texte avec le bloc-notes (notepad.exe), on peut le faire de deux façons différentes. Soit on ouvre le bloc-notes et on va dans le menu Fichier > Ouvrir puis on va chercher le fichier pour l’ouvrir. Soit on utilise la ligne de commande pour l’ouvrir directement.

Pour ce faire, il suffit d’utiliser la commande :

notepad c:\test.txt

et le fichier c:\test.txt s’ouvre directement dans le bloc-notes.

Ce qu’il s’est passé derrière, c’est que nous avons demandé d’exécuter le programme notepad.exe avec le paramètre c:\test.txt. Le programme notepad a analysé sa ligne de commande, il y a trouvé un paramètre et il a ouvert le fichier correspondant.

Superbe ! Nous allons apprendre à faire pareil !

Passer des paramètres en ligne de commande

La première chose à faire est de savoir comment faire pour passer des paramètres en ligne de commande. Plusieurs solutions existent. On peut par exemple exécuter la commande que j’ai écrite plus haut depuis le menu Démarrer > Exécuter (ou la combinaison windows + r).

Image utilisateur

On peut également le faire depuis une invite de commande (Menu Démarrer > Accessoires > Invite de commande) :

Image utilisateur

Ceci nous ouvre une console noire, comme celle que l’on connait bien et dans laquelle nous pouvons taper des instructions :

Image utilisateur

Mais nous, ce qui nous intéresse surtout, c’est de pouvoir le faire depuis Visual Studio Express afin de pouvoir passer des arguments à notre programme.
Pour ce faire, on va aller dans les propriétés de notre projet (bouton droit sur le projet, Propriétés) puis nous allons dans l’onglet Déboguer et nous voyons une zone de texte permettant de mettre des arguments à la ligne de commande. Rajoutons par exemple « Bonjour Nico » :

Passer une valeur à la ligne de commande depuis Visual Studio
Passer une valeur à la ligne de commande depuis Visual Studio

Voilà, maintenant lorsque nous exécuterons notre application, Visual Studio Express lui passera les arguments que nous avons définis en paramètre de la ligne de commande.

A noter que dans ce cas, les arguments « Bonjour Nico » ne seront valables que lorsque nous exécuterons l’application à travers Visual Studio Express. Evidemment, si nous exécutons notre application par l’invite de commande, nous aurons besoin de repasser les arguments au programme pour qu’il puisse les exploiter.

C’est bien ! Sauf que pour l’instant, ça ne nous change pas la vie ! Il faut apprendre à traiter ces paramètres …

Lire la ligne de commande

On peut lire le contenu de la ligne de commande de deux façons différentes. Vous vous rappelez de la méthode Main() ? On a vu que Visual Studio Express générait cette méthode avec des paramètres. Et bien ces paramètres, vous ne devinerez jamais ! Ce sont les paramètres de la ligne de commande. Oh joie !

static void Main(string[] args)
{
}

La variable args est un tableau de chaine de caractères. Sachant que chaque paramètre est délimité par des espaces, nous retrouverons chacun des paramètres à un indice du tableau différent.

Ce qui fait que si j’utilise le code suivant :

foreach (string parametre in args)
{
    Console.WriteLine(parametre);
}

et que je lance mon application avec les paramètres définis précédemment, je vais obtenir :

Image utilisateur

Et voilà, nous avons récupéré les paramètres de la ligne de commande, il ne nous restera plus qu’à les traiter dans notre programme. Comme prévu, nous obtenons deux paramètres. Le premier est la chaine de caractères « Bonjour », le deuxième est la chaine de caractères « Nico ». N’oubliez pas que c’est le caractère d’espacement qui sert de délimiteur entre les paramètres.

L’autre façon de récupérer la ligne de commande est d’utiliser la méthode Environment.GetCommandLineArgs(). Elle renvoie un tableau contenant les paramètres, comme ce qui est passé en paramètres à la méthode Main. La seule différence, c’est que dans le premier élément du tableau, nous trouverons le chemin complet de notre programme. Ceci peut être utile dans certains cas. Si cela n’a aucun intérêt pour vous, il suffira de commencer la lecture à partir de l’indice numéro 1.

L’exemple suivant affiche toutes les valeurs du tableau :

foreach (string parametre in Environment.GetCommandLineArgs())
{
    Console.WriteLine(parametre);    
}

Ce qui donne :

Afficher des paramètres de la ligne de commande
Afficher des paramètres de la ligne de commande

Tu as dit que c’était le caractère d’espacement qui permettait de délimiter les paramètres. J’ai essayé de rajouter le paramètre C:\Program Files\test.txt à ma ligne de commande afin de changer l’emplacement du fichier, mais je me retrouve avec deux paramètres au lieu d’un seul, c'est normal ?

Eh oui, il y a un espace entre Program et Files. L’astuce est de passer le paramètre entre guillemets, de cette façon : "C:\Program Files\test.txt". Nous aurons un seul paramètre dans la ligne de commande à la place de 2.

Comme par exemple :

Des paramètres avec des espaces pour la ligne de commande
Des paramètres avec des espaces pour la ligne de commande
En résumé
  • On peut passer des paramètres à une application en utilisant la ligne de commande.

  • Le programme C# peut lire et interpréter ces paramètres.

  • Ces paramètres sont séparés par des espaces.

Example of certificate of achievement
Example of certificate of achievement