Fichier de commande

De EduTech Wiki
Version datée du 14 mars 2007 à 22:39 par Daniel K. Schneider (discussion | contributions)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)
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

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.

Quelques conseils pratiques pour utiliser 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.

Créer un répertoire pour ces scripts

Windows trouve ses scripts en examinant les chemin définis dans la variable "PATH"

  • 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

Exemple:

%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;c:\bin
  • Si vous n'avez pas les droits administrateur, ajoutez une variable "Path" dans les variables utilisateur, ensuite insérer:
%Path%;c:\bin

Fichiers bat simples

  • Maintenant que votre système sait trouver des scripts, il faut en faire ....
  • 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

Exmple 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



Liens

http://fr.wikipedia.org/wiki/Cmd.exe

Chez Microsoft

http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/batch.mspx?mfr=true http://www.microsoft.com/technet/security/guidance/cryptographyetc/peap_d.mspx