Aller au menu - Aller au contenu

Icône La ligne de commande

Mise à jour : 02/02/2012
Difficulté : Facile Facile Creative Commons BY-NC-SA
22 955 visites depuis 7 jours, dont 183 sur ce chapitre classé 15/786
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.
Sommaire du chapitre :
Icône du chapitre
Chapitre précédent Sommaire Chapitre suivant

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 :

Code : Console
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 C# 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 » :

Image utilisateur


Voilà, maintenant lorsque nous exécuterons notre application, Visual C# 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 C# 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 C# 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 !

Code : C#
1
2
3
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 :

Code : C#
1
2
3
4
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 :

Code : C#
1
2
3
4
foreach (string parametre in Environment.GetCommandLineArgs())
{
    Console.WriteLine(parametre);    
}

Ce qui donne :

Image utilisateur


Attention : si vous devez accéder à un indice précis du tableau, vérifiez bien que la taille du tableau le permet. N’oubliez pas que si le tableau contient un seul élément et que vous essayez d’accéder au deuxième élément, alors il y aura une erreur.


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 :

Image utilisateur

Q.C.M.

Combien y a-t-il de paramètres dans le tableau args si j'appelle mon programme avec les arguments suivants :

Citation : Invite de commande
MonProgramme test "Bonjour le monde" Comment ca va ?
Quelle est la différence entre le tableau args et la méthode Environment.GetCommandLineArgs() ?

Statistiques de réponses au QCM

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.
Chapitre précédent Sommaire Chapitre suivant

Partager

6 commentaires pour "La ligne de commande"
Note moyenne : 3.05 / 4 (230 votes)
Pseudo Commentaire
Hors ligne nico.pyright # Posté le 30/10/2011 à 17:12:03
Groupe : Auteurs

Bonjour,

je viens de tester et cela fonctionne. Un problème de navigateur ?
 
Hors ligne TonyLegrec # Posté le 09/04/2012 à 21:31:20

Avis : Très bon

Serait-il possible de savoir quelle est la différence entre l'"invite de commande" de Windows et "C:\Windows\System32\cmd.exe" ("l'invite de commande" de Visual Basic)
Hors ligne TonyLegrec # Posté le 09/04/2012 à 21:31:57

Avis : Très bon

Visual Studio je voulais dire dsl
Hors ligne nico.pyright # Posté le 09/04/2012 à 21:36:38
Groupe : Auteurs

Globalement tu vas avoir des variables d'environnements en plus, path ...
 
Hors ligne msteph93 # Posté le 20/04/2012 à 20:59:28

Études : Informatique et Systèmes d'Information pour la Santé

Bonjour, juste pour signaler dans le QCM , il faudrait préciser par exemple " En imaginant que le programme s'appelle « MonProgramme » "
Sinon , on est amener à compter un paramètre en plus.
Merci !

Voir tous les commentaires