Fichier de commande

De EduTech Wiki
Aller à la navigation Aller à la recherche

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.

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.

Fichiers de commande pour Windows

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.

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->Compes d'utilisateurs
Dans le panneau à gauche: Modifier vos variables d'environnement

Exemple:

%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;c:\bin
  • Dans les variables utilisateur, ensuite insérer:
%Path%;c:\bin

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 ....

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

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.

Fichiers bat pour lancer un programme avec le bon classpath

Soit on redéfinit 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

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"

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

Elélements du langage de commande Windows

Voir commandes Windows

Liens

Chez Microsoft