Fichier de commande

De EduTech Wiki
Aller à : navigation, rechercher

Cet article est une ébauche à compléter. Une ébauche est une entrée ayant un contenu (très) maigre et qui a donc besoin d'un auteur.

1 Definition

A un fichier de commandes (aussi appelé fichier batchest un script écrit pour le "shell" ou l'interpréteur de lignes de commandes pour un système d'opération.

C.f. Shell script (Edutechwiki Anglais) pour plus d'informations.

2 Fichiers de commande pour Windows

2.1 La notion de fichier de commande

Sur le système d'exploitation Windows NT et XP, un fichier batch est un fichier texte contenant une série de commandes. Quand le fichier batch est lancé, de la même manière (d'un point de vue utilisateur) qu'un exécutable ordinaire, les commandes du fichier sont exécutées dans l'ordre. Un fichier batch est l'équivalent d'un script shell sous Unix ou cygwin.

Les fichiers batch du Windows NT sont les fichiers dotés de l’extension .BAT ou .CMD.

En technologies éducatives, l'utilisation la plus fréquente de ces fichier "bat" est probablement avec des programmes Java (gratuits) pour lesquels leurs auteurs ne fournissent pas de script.

2.2 Chemins et répertoires de scripts

Windows trouve ses scripts en examinant les chemins définis dans la variable "PATH" (même chose sur Unix et Mac)

  • Pour voir, ouvrir une fenêtre "Invite de commandes" et taper:
 echo %Path%
  • On conseille de créer un répertoire c:\bin pour y mettre tous vos scripts et autres petits logiciels utilisés en ligne de commande, et qu'il faut donc inclure dans le Path:
Pour Win2000 et XP
Démarrer -> Paramètres -> Panneau de configuration -> Système
Choisir: Avancé -> Variables d'environnment
Modifier la variable système "Path" en ajoutant à la fin (NE RIEN DETRUIRE) ;c:\bin
Pour Windows 7
Démarrer -> Panneau de configuration -> Système
Dans le panneau à gauche: Paramètres système avancés -> dans la nouvelle fenêtre, tout en bas, Variables d'environnement

Exemple:

%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;c:\bin
  • Dans les variables utilisateur, ensuite insérer:
%Path%;c:\bin
Pour Windows 8
La procédure est pareille. Ci-dessous une copie d'écran:
Modifier la variable d'environnement PATH pour un utilisateur

Il donc impératif de laisser: %USERPROFILE%, %Path%, etc.

Ne changer rien dans les variables systèmes si vous ne savez pas exactement ce que vous faites. Votre système peut ne plus marcher ....

Voici un exemple concert où vous devez modifier un chemin d'accès en utilisant la variable "PATH" :

Dans Windows 7, il se peut que vous ayez un problème avec l'installation de CompendiumLD. Apparemment, le problème serait que CompendiumLD ne retrouve pas son chemin vers les fichiers Java! Donc, si vous pensez avoir installé la dernière version de Java, que vous pensez avoir bien installé CompendiumLD, mais que vous ne pouvez toujours pas lancer CompendiumLD, alors il faudrait vérifier les chemins d'accès des fichiers. Pour cela, lorsque vous êtes dans la fenêtre Variables d'environnement (voir ci-dessus), dans les variables du système, vérifier que la variable Path contienne un accès vers les fichiers de Java. Pour cela, cliquez dessus, puis cliquez sur modifier. Il doit y avoir quelque part ceci :

C:\Program Files (x86)\Java\jre6\bin

Ou du moins quelque chose de similaire (en fonction du répertoire où vous avez installé Java). Si cet élément de chemin ne se trouve pas dans la variable "Path", alors vous devez ajouter ce chemin d'accès dans la variable. Pour cela, il vaut mieux ne pas le placer directement dedans. Il vaut mieux ajouter un complément de chemin. Pour cela, dans les Variables utilisateur pour User (User = votre nom), cliquer sur Nouvelle. Donnez comme nom de variable Path et dans la valeur de la variable, mettez

%path%;

... et immédiatement après, le chemin d'accès exact vers les fichiers de Java. Pour l'exemple de répertoire ci-dessus, cela donne :

%path%;C:\Program Files (x86)\Java\jre6\bin

Enfin, cliquez sur ok à toutes les fenêtres du système. Désormais, vous devriez pouvoir lancer CompendiumLD.

2.3 Scripts pour lancer des programmes Java

  • Pour vous simplifier la vie avec des utilitaires JAVA, on conseille vivement d'écrire un fichier *.bat ou *.cmd (script de commande) qui permettra de lancer des scripts java depuis partout, qui définissent des classpath etc. et qui vous évitent des choses à taper. En outre, selon l'installation de votre Windows, les fichiers *.jar exécutables ne marcheront pas (exemple: L'éditeur Reload)
  • Note: sous XP on utilise souvent *.cmd au lieu de *.bat ...., ceux qui utilisent Linux devraient savoir ce qu'est un fichier sh, csh, bash, etc.
  • Les processeurs XSLT sont souvent compliqués à lancer et le but de script est simplement de simplifier ce qu'il y a taper. Depuis le script on lance le programme en lui passant des paramètres.
  • Exemple pour lancer Saxon, voici contenu du fichier sax.bat
    • le script peut s'appeler comme vous voulez
    • Si le fichier s'appellait sax.bat, l'utilisateur taperait: sax
  rem lancer saxon avec la commande 'sax'
  java -jar c:\bin\saxon8.jar %1 %2 %3 %4 %5 %6 %7 %8 %9
  • On fait de sorte que le programme Java recoive les arguments tapés en ligne de commande
  • Les REM servent à ajouter des commentaires

Par exemple: si on tape dans une fenêtre de commande:

  sax -o résultat.svg input.xml style.xsl
  1. Windows lance le script sax.bat qu'il va trouver dans c:\bin
  2. et associe "-o" à %1, "resultat.svg" à %2, "input.xml" à %3, etc
  3. et donc lance la commande suivante:
  java -jar c:\bin\saxon8.jar -o resultat.svg input.xml style.xsl

2.3.1 La notion (vulgarisée) de classpath Java

  • Dans le monde XML, beaucoup de programmes sont écrits en Java. Un programme Java est une collection de classes. Lorsqu'on fait appel à des procédures Java on doit toujours indiquer la classe (ou l'objet) à qui elles appartiennent. Quand un objet fait appel à un autre objet (classe) qui n'est pas défini au même endroit (répertoire de fichiers *.class ou une archive *.jar du répertoire) il cherche dans le classpath.
  • Le classpath définit une série de chemins (path) qui indique ou il faut aller chercher des classes.
  • Le classpath peut être défini par une variable du système (win, unix, etc) ou directement indiqué à Java ou encore être inclut dans la commande java.

Exemple:

  • L'objet de la classe "org/apache/xalan/xslt/Process" n'est pas trouvé.
  • Pour y remédier, vous mettez le chemin de xalan.jar dans le classpath
  • en regardant le contenu du fichier *.jar avec Winzip vous allez voir qu'il existe un fichier org/apache/xalan/xslt/Process.class
  • Si vous mettez ces "*.jar" dans c:\bin il faut un classpath comme:
  c:\bin\xalan.jar;c:\bin\xercesImpl.jar; etc.
  • Si vous laissiez les archives à l'endroit où vous les avez dézippées, il faudrait par exemple:
  d:\soft\bla\xalan\bin\ma_classe.jar;d:\soft\....
  • Dans tous les cas, suivre les instructions en ce qui concerne les archives qui doivent se trouver dans le classpath ! A vous de savoir où vous les mettez.

2.3.2 Fichiers de commande pour lancer un programme avec le bon Classpath

Rappel: Sous Windows, les fichiers de commande simples s'appellent soit *.bat, soit *.cmd. Pour lancer un programm Java, on redéfinit soit la variable CLASSPATH (comme dans l'exemple xalan.bat ci-dessus), soit on utilise l'option -cp (comme dans l'exemple fop.bat ci-dessous).

Exemple: Contenu d'un script appelé xalan.bat pour lancer Xalan

@echo off
echo *** Appel du processeur XSLT ***
set CLASSPATH=c:\bin\xalan.jar;c:\bin\xerces.jar;
java org.apache.xalan.xslt.Process %1 %2 %3 %4 %5 %6 %7 %8 %9 

Exemple: Contenu d'un script appelé fop.bat pour lancer FOP

  • FOP est un processeur XSL-FO populaire
  • On aurait pu éviter les lignes "set" et simplement donner un très long classpath à "-cp", mais la solution ci-dessous est plus facile à vérifier (nom des classes parfois difficiles à taper).
em @ECHO OFF
set LOCALCLASSPATH=c:\bin\fop.jar
set LOCALCLASSPATH=%LOCALCLASSPATH%;c:\bin\xml-apis.jar
set LOCALCLASSPATH=%LOCALCLASSPATH%;c:\bin\xercesImpl-2.2.1.jar
set LOCALCLASSPATH=%LOCALCLASSPATH%;c:\bin\xalan-2.4.1.jar
set LOCALCLASSPATH=%LOCALCLASSPATH%;c:\bin\batik.jar
set LOCALCLASSPATH=%LOCALCLASSPATH%;c:\bin\avalon-framework-cvs-20020806.jar
set LOCALCLASSPATH=%LOCALCLASSPATH%;c:\bin\jimi.jar
java -cp "%LOCALCLASSPATH%" org.apache.fop.apps.Fop %1 %2 %3 %4 %5 %6 %7 %8

Exemple Saxon:

  • Ce processeur XSLT a quelques extensions intéressantes (fichiers output multiples)
  • http://saxon.sourceforge.net/ (nov 2005: saxon-B 8.* conseillé)
  • Contenu du fichier "saxon8.bat" à TECFA:
  java -jar w:\bin\saxon8.jar %1 %2 %3 %4 %5 %6 %7 %8 %9

2.3.3 Fichiers de commande pour lancer une application Java avec GUI

Si vous faites, un fichier de commandes pour lancer une application GUI écrite par exemple en JAVA, la fenêtre reste ouverte, ce qui est inutile (une fois que cela marche).

Exemple pour lancer l'éditeur JEDIT

Au lieu de

   java -jar "c:\program files\jEdit\jedit.jar"

Utilisez la commande start:

   start javaw.exe -jar "c:\program files\jEdit\jedit.jar"

2.4 Lancer d'autres logiciels

Les applications Java opensource ne sont qu'un exemple. Voici un autre. Malheureusement quand on installe GIMP il détecte la langue du système et affiche en français. Mauvais choix, car ce logiciel a été fait par des Anglophone et les traductions ne sont pas tjrs bien faites. Pour avoir GIMP en Anglais faites un fichier gimp.cmd et ensuite faites un shortcut (sur le desktop, dans le menu de démarrage, etc.).

set lang=en
cd \Program Files\Gimp-2.0\bin
start gimp-2.6.exe
exit

2.5 Eléments du langage de commande Windows

Voir commandes Windows

3 Liens

Chez Microsoft