Script par lots - Guide rapide

Batch Script est incorporé pour automatiser les séquences de commandes qui sont de nature répétitive. Le scripting est un moyen par lequel on peut atténuer cette nécessité en automatisant ces séquences de commandes afin de rendre sa vie au shell plus facile et plus productive. Dans la plupart des organisations, Batch Script est incorporé d'une manière ou d'une autre pour automatiser les choses.

Certaines des fonctionnalités de Batch Script sont:

  • Peut lire les entrées des utilisateurs afin qu'il puisse être traité ultérieurement.

  • Possède des structures de contrôle telles que for, if, while, switch pour une meilleure automatisation et un meilleur script.

  • Prend en charge les fonctionnalités avancées telles que les fonctions et les tableaux.

  • Prend en charge les expressions régulières.

  • Peut inclure d'autres codes de programmation tels que Perl.

Certaines des utilisations courantes de Batch Script sont:

  • Configuration de serveurs à des fins différentes.

  • Automatisation des activités de gestion interne telles que la suppression des fichiers indésirables ou des fichiers journaux.

  • Automatiser le déploiement des applications d'un environnement à un autre.

  • Installation de programmes sur différentes machines à la fois.

Les scripts batch sont stockés dans de simples fichiers texte contenant des lignes avec des commandes qui sont exécutées en séquence, l'une après l'autre. Ces fichiers ont l'extension spéciale BAT ou CMD. Les fichiers de ce type sont reconnus et exécutés via une interface (parfois appelée shell) fournie par un fichier système appelé interpréteur de commandes. Sur les systèmes Windows, cet interpréteur est appelé cmd.exe.

Exécuter un fichier de commandes est une simple question de cliquer dessus. Les fichiers batch peuvent également être exécutés dans une invite de commande ou la ligne Démarrer-Exécuter. Dans ce cas, le nom du chemin complet doit être utilisé à moins que le chemin du fichier ne se trouve dans l'environnement de chemin. Voici un exemple simple de script par lots. Ce script de lot lors de l'exécution supprime tous les fichiers du répertoire en cours.

:: Deletes All files in the Current Directory With Prompts and Warnings
::(Hidden, System, and Read-Only Files are Not Affected)
:: @ECHO OFF
DEL . DR

Ce chapitre explique l'environnement lié à Batch Script.

Rédaction et exécution

En règle générale, pour créer un fichier de commandes, le bloc-notes est utilisé. Il s'agit de l'outil le plus simple pour la création de fichiers batch. Vient ensuite l'environnement d'exécution des scripts batch. Sur les systèmes Windows, cela se fait via l'invite de commande ou cmd.exe. Tous les fichiers de commandes sont exécutés dans cet environnement.

Voici les différentes façons de lancer cmd.exe -

Method 1 - Allez dans C: \ Windows \ System32 et double-cliquez sur le fichier cmd.

Method 2 - Via la commande d'exécution - L'instantané suivant montre pour trouver l'invite de commande (cmd.exe) sur le serveur Windows 2012.

Une fois que cmd.exe est lancé, l'écran suivant s'affiche. Ce sera votre environnement pour exécuter vos scripts batch.

Variables d'environnement

Pour exécuter des fichiers de commandes à partir de l'invite de commande, vous devez soit accéder à l'emplacement où le fichier de commandes est stocké, soit entrer l'emplacement du fichier dans la variable d'environnement de chemin. Par conséquent, en supposant que le fichier de commandes est stocké à l'emplacement C:\Application\bin, vous devrez suivre ces instructions pour l'inclusion de la variable PATH.

OS Production
les fenêtres Ajoutez la chaîne; C:\Application\binà la fin de la variable système PATH.

Dans ce chapitre, nous examinerons certaines des commandes batch fréquemment utilisées.

S. Non Commandes et description
1 VER

Cette commande par lots affiche la version de MS-DOS que vous utilisez.

2 ASSOC

Il s'agit d'une commande par lots qui associe une extension à un type de fichier (FTYPE), affiche les associations existantes ou supprime une association.

3 CD

Cette commande par lots aide à apporter des modifications à un répertoire différent ou affiche le répertoire actuel.

4 CLS

Cette commande batch efface l'écran.

5 COPIE

Cette commande par lots est utilisée pour copier des fichiers d'un emplacement à l'autre.

6 DEL

Cette commande par lots supprime les fichiers et non les répertoires.

sept DIR

Cette commande batch répertorie le contenu d'un répertoire.

8 DATE

Cette commande batch aide à trouver la date système.

9 ÉCHO

Cette commande par lots affiche des messages ou active ou désactive l'écho des commandes.

dix SORTIE

Cette commande batch quitte la console DOS.

11 MARYLAND

Cette commande par lots crée un nouveau répertoire à l'emplacement actuel.

12 BOUGE TOI

Cette commande batch déplace les fichiers ou répertoires entre les répertoires.

13 CHEMIN

Cette commande batch affiche ou définit la variable de chemin.

14 PAUSE

Cette commande batch invite l'utilisateur et attend qu'une ligne d'entrée soit saisie.

15 RAPIDE

Cette commande par lots peut être utilisée pour modifier ou réinitialiser l'invite cmd.exe.

16 RD

Cette commande par lots supprime les répertoires, mais les répertoires doivent être vides avant de pouvoir être supprimés.

17 REN

Renomme les fichiers et répertoires

18 REM

Cette commande batch est utilisée pour les remarques dans les fichiers batch, empêchant le contenu de la remarque d'être exécuté.

19 DÉBUT

Cette commande par lots démarre un programme dans une nouvelle fenêtre ou ouvre un document.

20 TEMPS

Cette commande batch définit ou affiche l'heure.

21 TYPE

Cette commande par lots imprime le contenu d'un ou plusieurs fichiers dans la sortie.

22 VOL

Cette commande par lots affiche les étiquettes de volume.

23 ATTRIB

Affiche ou définit les attributs des fichiers dans le répertoire curret

24 CHKDSK

Cette commande batch vérifie le disque pour tout problème.

25 CHOIX

Cette commande batch fournit une liste d'options à l'utilisateur.

26 CMD

Cette commande batch appelle une autre instance d'invite de commande.

27 COMP

Cette commande batch compare 2 fichiers en fonction de la taille du fichier.

28 CONVERTIR

Cette commande par lots convertit un volume du système de fichiers FAT16 ou FAT32 en système de fichiers NTFS.

29 DRIVERQUERY

Cette commande par lots affiche tous les pilotes de périphérique installés et leurs propriétés.

30 DÉVELOPPER

Cette commande par lots extrait les fichiers des fichiers CAB compressés .cab.

31 TROUVER

Cette commande batch recherche une chaîne dans les fichiers ou en entrée, produisant des lignes correspondantes.

32 FORMAT

Cette commande par lots formate un disque pour utiliser le système de fichiers pris en charge par Windows tel que FAT, FAT32 ou NTFS, écrasant ainsi le contenu précédent du disque.

33 AIDEZ-MOI

Cette commande par lots affiche la liste des commandes fournies par Windows.

34 IPCONFIG

Cette commande par lots affiche la configuration IP de Windows. Affiche la configuration par connexion et le nom de cette connexion.

35 ÉTIQUETTE

Cette commande batch ajoute, définit ou supprime une étiquette de disque.

36 PLUS

Cette commande batch affiche le contenu d'un ou plusieurs fichiers, un écran à la fois.

37 NET

Fournit divers services réseau, selon la commande utilisée.

38 PING

Cette commande par lots envoie des paquets «écho» ICMP / IP sur le réseau à l'adresse désignée.

39 FERMER

Cette commande batch arrête un ordinateur ou déconnecte l'utilisateur actuel.

40 TRIER

Cette commande batch prend l'entrée d'un fichier source et trie son contenu par ordre alphabétique, de A à Z ou Z à A. Elle imprime la sortie sur la console.

41 SUBST

Cette commande par lots affecte une lettre de lecteur à un dossier local, affiche les affectations en cours ou supprime une affectation.

42 INFORMATION SYSTÈME

Cette commande batch montre la configuration d'un ordinateur et son système d'exploitation.

43 TASKKILL

Cette commande par lots met fin à une ou plusieurs tâches.

44 LISTE DE TÂCHES

Cette commande par lots répertorie les tâches, y compris le nom de la tâche et l'ID de processus (PID).

45 XCOPY

Cette commande batch copie les fichiers et répertoires de manière plus avancée.

46 ARBRE

Cette commande batch affiche une arborescence de tous les sous-répertoires du répertoire courant à n'importe quel niveau de récursion ou de profondeur.

47 FC

Cette commande batch répertorie les différences réelles entre deux fichiers.

48 DISKPART

Cette commande par lots affiche et configure les propriétés des partitions de disque.

49 TITRE

Cette commande batch définit le titre affiché dans la fenêtre de la console.

50 ENSEMBLE

Affiche la liste des variables d'environnement sur le système actuel.

Dans ce chapitre, nous allons apprendre à créer, enregistrer, exécuter et modifier des fichiers batch.

Création de fichiers batch

Les fichiers batch sont normalement créés dans le bloc-notes. Par conséquent, le moyen le plus simple consiste à ouvrir le bloc-notes et à saisir les commandes requises pour le script. Pour cet exercice, ouvrez le bloc-notes et entrez les instructions suivantes.

:: Deletes All files in the Current Directory With Prompts and Warnings 
::(Hidden, System, and Read-Only Files are Not Affected) 
:: 
@ECHO OFF 
DEL . 
DR

Enregistrement de fichiers batch

Une fois votre fichier de commandes créé, l'étape suivante consiste à enregistrer votre fichier de commandes. Les fichiers batch ont l'extension .bat ou .cmd. Quelques règles générales à garder à l'esprit lors de l'attribution d'un nom aux fichiers batch -

  • Essayez d'éviter les espaces lors de la dénomination des fichiers de commandes, cela crée parfois des problèmes lorsqu'ils sont appelés à partir d'autres scripts.

  • Ne les nommez pas d'après les fichiers de commandes courants disponibles dans le système, tels que ping.cmd.

La capture d'écran ci-dessus montre comment enregistrer le fichier de commandes. Lors de l'enregistrement de votre fichier de commandes, quelques points à garder à l'esprit.

  • N'oubliez pas de mettre le .bat ou .cmd à la fin du nom de fichier.
  • Choisissez l'option «Enregistrer en tant que type» sous «Tous les fichiers».
  • Mettez le nom du fichier entier entre guillemets "".

Exécution de fichiers batch

Voici les étapes pour exécuter un fichier de commandes -

  • Step 1 - Ouvrez l'invite de commande (cmd.exe).

  • Step 2 - Accédez à l'emplacement où le fichier .bat ou .cmd est stocké.

  • Step 3 - Écrivez le nom du fichier comme indiqué dans l'image suivante et appuyez sur le bouton Entrée pour exécuter le fichier de commandes.

Modification des fichiers batch

Voici les étapes de modification d'un fichier de commandes existant.

  • Step 1 - Ouvrez l'explorateur Windows.

  • Step 2 - Accédez à l'emplacement où le fichier .bat ou .cmd est stocké.

  • Step 3- Cliquez avec le bouton droit sur le fichier et choisissez l'option «Modifier» dans le menu contextuel. Le fichier s'ouvrira dans le Bloc-notes pour une édition ultérieure.

Normalement, la première ligne d'un fichier de commandes se compose souvent de la commande suivante.

Commande ECHO

@echo off

Par défaut, un fichier de commandes affichera sa commande lors de son exécution. Le but de cette première commande est de désactiver cet affichage. La commande "echo off" désactive l'affichage de tout le script, à l'exception de la commande "echo off" elle-même. Le signe "at" "@" devant fait que la commande s'applique également à elle-même.

Documentation

Très souvent, les fichiers batch contiennent également des lignes commençant par la commande "Rem". C'est un moyen de saisir des commentaires et de la documentation. L'ordinateur ignore tout ce qui se trouve sur une ligne après Rem. Pour les fichiers batch avec une complexité croissante, c'est souvent une bonne idée d'avoir des commentaires.

Premier programme de script par lots

Construisons notre premier programme de script batch simple. Ouvrez le bloc-notes et entrez les lignes de code suivantes. Enregistrez le fichier sous «List.cmd».

Le code fait ce qui suit -

  • Utilise la commande echo off pour s'assurer que les commandes ne sont pas affichées lorsque le code est exécuté.

  • La commande Rem est utilisée pour ajouter un commentaire pour dire exactement ce que fait ce fichier batch.

  • La commande dir est utilisée pour prendre le contenu de l'emplacement C: \ Program Files.

  • La commande '>' est utilisée pour rediriger la sortie vers le fichier C: \ lists.txt.

  • Enfin, la commande echo est utilisée pour indiquer à l'utilisateur que l'opération est terminée.

@echo off 
Rem This is for listing down all the files in the directory Program files 
dir "C:\Program Files" > C:\lists.txt 
echo "The program has completed"

Lorsque la commande ci-dessus est exécutée, les noms des fichiers dans C: \ Program Files seront envoyés au fichier C: \ Lists.txt et dans l'invite de commande, le message «Le programme est terminé» s'affiche.

Il existe deux types de variables dans les fichiers de commandes. Le premier concerne les paramètres qui peuvent être passés lors de l'appel du fichier batch et l'autre se fait via la commande set.

Arguments de ligne de commande

Les scripts batch prennent en charge le concept d'arguments de ligne de commande dans lesquels les arguments peuvent être passés au fichier batch lorsqu'ils sont appelés. Les arguments peuvent être appelés à partir des fichiers de commandes via les variables% 1,% 2,% 3, etc.

L'exemple suivant montre un fichier de commandes qui accepte 3 arguments de ligne de commande et les renvoie à l'écran de ligne de commande.

@echo off 
echo %1 
echo %2 
echo %3

Si le script de traitement par lots ci-dessus est stocké dans un fichier appelé test.bat et que nous devions exécuter le lot comme

Test.bat 1 2 3

Voici une capture d'écran de ce à quoi cela ressemblerait dans l'invite de commande lorsque le fichier de commandes est exécuté.

La commande ci-dessus produit la sortie suivante.

1 
2 
3

Si nous devions exécuter le lot comme

Example 1 2 3 4

La sortie resterait toujours la même que ci-dessus. Cependant, le quatrième paramètre serait ignoré.

Définir la commande

L'autre façon dont les variables peuvent être initialisées est via la commande 'set'. Voici la syntaxe de la commande set.

Syntaxe

set /A variable-name=value

où,

  • variable-name est le nom de la variable que vous souhaitez définir.

  • value est la valeur qui doit être définie par rapport à la variable.

  • /A – Ce commutateur est utilisé si la valeur doit être de nature numérique.

L'exemple suivant montre une manière simple d'utiliser la commande set.

Exemple

@echo off 
set message=Hello World 
echo %message%
  • Dans l'extrait de code ci-dessus, une variable appelée message est définie et définie avec la valeur "Hello World".

  • Pour afficher la valeur de la variable, notez que la variable doit être entourée du signe%.

Production

La commande ci-dessus produit la sortie suivante.

Hello World

Travailler avec des valeurs numériques

Dans le script batch, il est également possible de définir une variable pour contenir une valeur numérique. Cela peut être fait en utilisant le commutateur / A.

Le code suivant montre une manière simple dont les valeurs numériques peuvent être définies avec le commutateur / A.

@echo off 
SET /A a = 5 
SET /A b = 10 
SET /A c = %a% + %b% 
echo %c%
  • Nous définissons d'abord la valeur de 2 variables, a et b à 5 et 10 respectivement.

  • Nous ajoutons ces valeurs et les stockons dans la variable c.

  • Enfin, nous affichons la valeur de la variable c.

La sortie du programme ci-dessus serait de 15.

Tous les opérateurs arithmétiques fonctionnent dans des fichiers batch. L'exemple suivant montre que les opérateurs arithmétiques peuvent être utilisés dans les fichiers de commandes.

@echo off 
SET /A a = 5 
SET /A b = 10 
SET /A c = %a% + %b% 
echo %c% 
SET /A c = %a% - %b% 
echo %c% 
SET /A c = %b% / %a% 
echo %c% 
SET /A c = %b% * %a% 
echo %c%

La commande ci-dessus produit la sortie suivante.

15 
-5 
2 
50

Variables locales et globales

Dans n'importe quel langage de programmation, il existe une option pour marquer les variables comme ayant une sorte de portée, c'est-à-dire la section de code sur laquelle elles peuvent être accédées. Normalement, les variables ayant une portée globale peuvent être accédées n'importe où à partir d'un programme tandis que les variables de portée locale ont une limite définie dans laquelle elles peuvent être accédées.

Les scripts DOS ont également une définition pour les variables de portée locale et globale. Par défaut, les variables sont globales pour l'ensemble de votre session d'invite de commandes. Appelez la commande SETLOCAL pour rendre les variables locales à la portée de votre script. Après avoir appelé SETLOCAL, toutes les affectations de variables sont rétablies lors de l'appel de ENDLOCAL, de l'appel de EXIT ou lorsque l'exécution atteint la fin du fichier (EOF) dans votre script. L'exemple suivant montre la différence lorsque des variables locales et globales sont définies dans le script.

Exemple

@echo off 
set globalvar = 5
SETLOCAL
set var = 13145
set /A var = %var% + 5
echo %var%
echo %globalvar%
ENDLOCAL

Peu de choses clés à noter sur le programme ci-dessus.

  • La 'globalvar' est définie avec une portée globale et est disponible dans tout le script.

  • La variable 'var' est définie dans une portée locale car elle est incluse entre un bloc 'SETLOCAL' et 'ENDLOCAL'. Par conséquent, cette variable sera détruite dès que l'instruction 'ENDLOCAL' sera exécutée.

Production

La commande ci-dessus produit la sortie suivante.

13150
5

Vous remarquerez que la commande echo% var% ne donnera rien car après l'instruction ENDLOCAL, la variable 'var' n'existera plus.

Utilisation des variables d'environnement

Si vous avez des variables qui seraient utilisées dans les fichiers de commandes, il est toujours préférable d'utiliser des variables d'environnement. Une fois la variable d'environnement définie, elle est accessible via le signe%. L'exemple suivant montre comment voir le JAVA_HOME défini sur un système. La variable JAVA_HOME est un composant clé qui est normalement utilisé par une grande variété d'applications.

@echo off 
echo %JAVA_HOME%

La sortie afficherait le répertoire JAVA_HOME qui dépendrait d'un système à l'autre. Voici un exemple de sortie.

C:\Atlassian\Bitbucket\4.0.1\jre

C'est toujours une bonne pratique d'ajouter des commentaires ou de la documentation pour les scripts créés. Ceci est nécessaire pour la maintenance des scripts afin de comprendre ce que fait réellement le script.

Par exemple, considérez le morceau de code suivant qui n'a aucune forme de commentaires. Si une personne ordinaire qui n'a pas développé le script suivant essaie de comprendre le script, il lui faudrait beaucoup de temps pour comprendre ce que fait réellement le script.

ECHO OFF 
IF NOT "%OS%"=="Windows_NT" GOTO Syntax 
ECHO.%* | FIND "?" >NUL 
IF NOT ERRORLEVEL 1 GOTO Syntax 
IF NOT [%2]==[] GOTO Syntax 
SETLOCAL 
SET WSS= 
IF NOT [%1]==[] FOR /F "tokens = 1 delims = \ " %%A IN ('ECHO.%~1') DO SET WSS = %%A 
FOR /F "tokens = 1 delims = \ " %%a IN ('NET VIEW ^| FIND /I "\\%WSS%"') DO FOR /F 
"tokens = 1 delims = " %%A IN ('NBTSTAT -a %%a ^| FIND /I /V "%%a" ^| FIND "<03>"') 
DO ECHO.%%a %%A 
ENDLOCAL 
GOTO:EOF 
ECHO Display logged on users and their workstations. 
ECHO Usage: ACTUSR [ filter ] 
IF "%OS%"=="Windows_NT" ECHO Where: filter is the first part 
of the computer name^(s^) to be displayed

Commentaires utilisant l'instruction Rem

Il existe deux façons de créer des commentaires dans Batch Script; l'un est via la commande Rem. Tout texte qui suit l'instruction Rem sera traité comme des commentaires et ne sera pas exécuté. Voici la syntaxe générale de cette déclaration.

Syntaxe

Rem Remarks

où «Remarques» est les commentaires qui doivent être ajoutés.

L'exemple suivant montre une manière simple Rem la commande peut être utilisée.

Exemple

@echo off 
Rem This program just displays Hello World 
set message=Hello World 
echo %message%

Production

La commande ci-dessus produit la sortie suivante. Vous remarquerez que la ligne avec l'instruction Rem ne sera pas exécutée.

Hello World

Commentaires utilisant l'instruction ::

L'autre façon de créer des commentaires dans Batch Script consiste à utiliser la commande ::. Tout texte qui suit l'instruction :: sera traité comme un commentaire et ne sera pas exécuté. Voici la syntaxe générale de cette déclaration.

Syntaxe

:: Remarks

où 'Remarks' est le commentaire qui doit être ajouté.

L'exemple suivant montre l'utilisation de la commande "::".

Exemple

@echo off 
:: This program just displays Hello World 
set message = Hello World 
echo %message%

Production

La commande ci-dessus produit la sortie suivante. Vous remarquerez que la ligne avec l'instruction :: ne sera pas exécutée.

Hello World

Note - Si vous avez trop de lignes de Rem, cela pourrait ralentir le code, car à la fin, chaque ligne de code du fichier batch doit encore être exécutée.

Regardons l'exemple du gros script que nous avons vu au début de cette rubrique et voyons à quoi il ressemble lorsque la documentation y est ajoutée.

::===============================================================
:: The below example is used to find computer and logged on users
::
::===============================================================
ECHO OFF 
:: Windows version check 
IF NOT "%OS%"=="Windows_NT" GOTO Syntax 
ECHO.%* | FIND "?" >NUL 
:: Command line parameter check 
IF NOT ERRORLEVEL 1 GOTO Syntax
IF NOT [%2]==[] GOTO Syntax 
:: Keep variable local 
SETLOCAL 
:: Initialize variable 
SET WSS= 
:: Parse command line parameter 
IF NOT [%1]==[] FOR /F "tokens = 1 delims = \ " %%A IN ('ECHO.%~1') DO SET WSS = %%A 
:: Use NET VIEW and NBTSTAT to find computers and logged on users 
FOR /F "tokens = 1 delims = \ " %%a IN ('NET VIEW ^| FIND /I "\\%WSS%"') DO FOR /F 
"tokens = 1 delims = " %%A IN ('NBTSTAT -a %%a ^| FIND /I /V "%%a" ^| FIND 
"<03>"') DO ECHO.%%a %%A 
:: Done 
ENDLOCAL
GOTO:EOF 
:Syntax 
ECHO Display logged on users and their workstations. 
ECHO Usage: ACTUSR [ filter ] 
IF "%OS%"=="Windows_NT" ECHO Where: filter is the first part of the 
computer name^(s^) to be displayed

Vous pouvez maintenant voir que le code est devenu plus compréhensible pour les utilisateurs qui n'ont pas développé le code et qu'il est donc plus maintenable.

Sous DOS, une chaîne est une collection ordonnée de caractères, telle que "Hello, World!".

S. Non Cordes et description
1 Créer une chaîne

Une chaîne peut être créée sous DOS de la manière suivante.

2 Chaîne vide

Chaîne vide

3 Interpolation de chaîne

L'interpolation de chaîne est un moyen de construire une nouvelle valeur String à partir d'un mélange de constantes, de variables, de littéraux et d'expressions en incluant leurs valeurs dans un littéral de chaîne.

4 Concaténation de chaînes

Vous pouvez utiliser l'opérateur set pour concaténer deux chaînes ou une chaîne et un caractère, ou deux caractères. Voici un exemple simple qui montre comment utiliser la concaténation de chaînes.

5 Longueur de chaine

Dans les scripts DOS, il n'y a pas de fonction de longueur définie pour trouver la longueur d'une chaîne. Il existe des fonctions personnalisées qui peuvent être utilisées pour la même chose. Voici un exemple de fonction personnalisée pour voir la longueur d'une chaîne.

6 toInt

Une variable qui a été définie comme chaîne à l'aide de la variable set peut être convertie en un entier à l'aide du commutateur / A qui utilise la variable set. L'exemple suivant montre comment cela peut être accompli.

sept Aligner à droite

Cela permet d'aligner le texte à droite, ce qui est normalement utilisé pour améliorer la lisibilité des colonnes numériques.

8 Chaîne de gauche

Ceci est utilisé pour extraire les caractères du début d'une chaîne.

9 Chaîne moyenne

Ceci est utilisé pour extraire une sous-chaîne via la position des caractères dans la chaîne.

dix Retirer

La fonction de substitution de chaîne peut également être utilisée pour supprimer une sous-chaîne d'une autre chaîne.

11 Supprimer les deux extrémités

Ceci est utilisé pour supprimer le premier et le dernier caractère d'une chaîne.

12 Supprimer tous les espaces

Ceci est utilisé pour supprimer tous les espaces dans une chaîne par substitution.

13 Remplacer une chaîne

Pour remplacer une sous-chaîne par une autre chaîne, utilisez la fonction de substitution de chaîne.

14 Chaîne droite

Ceci est utilisé pour extraire des caractères de la fin d'une chaîne.

Les tableaux ne sont pas spécifiquement définis comme type dans Batch Script mais peuvent être implémentés. Les choses suivantes doivent être notées lorsque les tableaux sont implémentés dans Batch Script.

  • Chaque élément du tableau doit être défini avec la commande set.
  • La boucle «for» serait nécessaire pour parcourir les valeurs du tableau.

Créer un tableau

Un tableau est créé à l'aide de la commande set suivante.

set a[0]=1

Où 0 est l'indice du tableau et 1 est la valeur affectée au premier élément du tableau.

Une autre façon d'implémenter des tableaux consiste à définir une liste de valeurs et à parcourir la liste de valeurs. L'exemple suivant montre comment cela peut être implémenté.

Exemple

@echo off 
set list = 1 2 3 4 
(for %%a in (%list%) do ( 
   echo %%a 
))

Production

La commande ci-dessus produit la sortie suivante.

1
2
3
4

Accès aux baies

Vous pouvez récupérer une valeur du tableau à l'aide de la syntaxe d'indice, en passant l'index de la valeur que vous souhaitez récupérer entre crochets juste après le nom du tableau.

Exemple

@echo off 
set a[0]=1 
echo %a[0]%

Dans cet exemple, l'index commence à 0, ce qui signifie que le premier élément est accessible en utilisant l'index comme 0, le deuxième élément peut être accédé en utilisant l'index comme 1 et ainsi de suite. Vérifions l'exemple suivant pour créer, initialiser et accéder aux tableaux -

@echo off
set a[0] = 1 
set a[1] = 2 
set a[2] = 3 
echo The first element of the array is %a[0]% 
echo The second element of the array is %a[1]% 
echo The third element of the array is %a[2]%

La commande ci-dessus produit la sortie suivante.

The first element of the array is 1 
The second element of the array is 2 
The third element of the array is 3

Modification d'un tableau

Pour ajouter un élément à la fin du tableau, vous pouvez utiliser l'élément set avec le dernier index de l'élément du tableau.

Exemple

@echo off 
set a[0] = 1  
set a[1] = 2  
set a[2] = 3 
Rem Adding an element at the end of an array 
Set a[3] = 4 
echo The last element of the array is %a[3]%

La commande ci-dessus produit la sortie suivante.

The last element of the array is 4

Vous pouvez modifier un élément existant d'un tableau en attribuant une nouvelle valeur à un index donné, comme indiqué dans l'exemple suivant -

@echo off 
set a[0] = 1 
set a[1] = 2  
set a[2] = 3 
Rem Setting the new value for the second element of the array 
Set a[1] = 5 
echo The new value of the second element of the array is %a[1]%

La commande ci-dessus produit la sortie suivante.

The new value of the second element of the array is 5

Itération sur un tableau

L'itération sur un tableau est réalisée en utilisant la boucle «for» et en parcourant chaque élément du tableau. L'exemple suivant montre une manière simple d'implémenter un tableau.

@echo off 
setlocal enabledelayedexpansion 
set topic[0] = comments 
set topic[1] = variables 
set topic[2] = Arrays 
set topic[3] = Decision making 
set topic[4] = Time and date 
set topic[5] = Operators 

for /l %%n in (0,1,5) do ( 
   echo !topic[%%n]! 
)

Les choses suivantes doivent être notées à propos du programme ci-dessus -

  • Chaque élément du tableau doit être spécifiquement défini à l'aide de la commande set.

  • La boucle «for» avec le paramètre / L pour parcourir les plages est utilisée pour parcourir le tableau.

Production

La commande ci-dessus produit la sortie suivante.

Comments 
variables 
Arrays 
Decision making 
Time and date 
Operators

Longueur d'un tableau

La longueur d'un tableau se fait en itérant sur la liste des valeurs du tableau car il n'y a pas de fonction directe pour déterminer le nombre d'éléments dans un tableau.

@echo off 
set Arr[0] = 1 
set Arr[1] = 2 
set Arr[2] = 3 
set Arr[3] = 4 
set "x = 0" 
:SymLoop 

if defined Arr[%x%] ( 
   call echo %%Arr[%x%]%% 
   set /a "x+=1"
   GOTO :SymLoop 
)
echo "The length of the array is" %x%

Production

Sortie La commande ci-dessus produit la sortie suivante.

The length of the array is 4

Création de structures dans des tableaux

Les structures peuvent également être implémentées dans des fichiers batch en utilisant un peu de codage supplémentaire pour l'implémentation. L'exemple suivant montre comment cela peut être réalisé.

Exemple

@echo off 
set len = 3 
set obj[0].Name = Joe 
set obj[0].ID = 1 
set obj[1].Name = Mark 
set obj[1].ID = 2 
set obj[2].Name = Mohan 
set obj[2].ID = 3 
set i = 0 
:loop 

if %i% equ %len% goto :eof 
set cur.Name= 
set cur.ID=

for /f "usebackq delims==.tokens=1-3" %%j in (`set obj[%i%]`) do ( 
   set cur.%%k=%%l 
) 
echo Name = %cur.Name% 
echo Value = %cur.ID% 
set /a i = %i%+1 
goto loop

Les éléments clés suivants doivent être notés à propos du code ci-dessus.

  • Chaque variable définie à l'aide de la commande set a 2 valeurs associées à chaque index du tableau.

  • La variable i est mis à 0 afin que nous puissions boucler à travers la structure sera la longueur du tableau qui est 3.

  • Nous vérifions toujours la condition selon laquelle la valeur de i est égale à la valeur de len et sinon, nous parcourons le code.

  • Nous pouvons accéder à chaque élément de la structure en utilisant la notation obj [% i%].

Production

La commande ci-dessus produit la sortie suivante.

Name = Joe 
Value = 1 
Name = Mark 
Value = 2 
Name = Mohan 
Value = 3

Les structures de prise de décision exigent que le programmeur spécifie une ou plusieurs conditions à évaluer ou à tester par le programme, ainsi qu'une ou plusieurs instructions à exécuter si la condition est déterminée comme étant true, et éventuellement d'autres instructions à exécuter si la condition est déterminée false.

S. Non Cordes et description
1 Si déclaration

La première déclaration de prise de décision est la déclaration «si».

2 Déclaration If / else

La prochaine déclaration de prise de décision est la déclaration If / else. Voici la forme générale de cette déclaration.

3 Instructions If imbriquées

Parfois, il est nécessaire d'avoir plusieurs instructions «if» intégrées les unes dans les autres. Voici la forme générale de cette déclaration.

Un opérateur est un symbole qui indique au compilateur d'effectuer des manipulations mathématiques ou logiques spécifiques.

Dans le script batch, les types d'opérateurs suivants sont possibles.

  • Opérateurs arithmétiques
  • Opérateurs relationnels
  • Opérateurs logiques
  • Opérateurs d'affectation
  • Opérateurs au niveau du bit

Opérateurs arithmétiques

Le langage de script Batch prend en charge les opérateurs arithmétiques normaux comme n'importe quel langage. Voici les opérateurs arithmétiques disponibles.

Afficher l'exemple

Opérateur La description Exemple
+ Ajout de deux opérandes 1 + 2 donnera 3
- Soustrait le deuxième opérande du premier 2 - 1 donnera 1
* Multiplication des deux opérandes 2 * 2 donnera 4
/ Division du numérateur par le dénominateur 3/2 donnera 1,5
% Opérateur de module et reste après une division entier / flottant 3% 2 donnera 1

Opérateurs relationnels

Les opérateurs relationnels permettent de comparer des objets. Voici les opérateurs relationnels disponibles.

Afficher l'exemple

Opérateur La description Exemple
EQU Teste l'égalité entre deux objets 2 EQU 2 donnera vrai
NEQ Teste la différence entre deux objets 3 NEQ 2 donnera vrai
LSS Vérifie si l'objet gauche est inférieur à l'opérande droit 2 LSS 3 donnera vrai
LEQ Vérifie si l'objet gauche est inférieur ou égal à l'opérande droit 2 LEQ 3 donnera vrai
GTR Vérifie si l'objet gauche est plus grand que l'opérande droit 3 GTR 2 donnera vrai
GEQ Vérifie si l'objet gauche est supérieur ou égal à l'opérande droit 3 GEQ 2 donnera vrai

Opérateurs logiques

Les opérateurs logiques sont utilisés pour évaluer les expressions booléennes. Voici les opérateurs logiques disponibles.

Le langage batch est équipé d'un ensemble complet d'opérateurs logiques booléens tels que AND, OR, XOR, mais uniquement pour les nombres binaires. Il n'y a pas non plus de valeurs pour TRUE ou FALSE. Le seul opérateur logique disponible pour les conditions est l'opérateur NOT.

Afficher l'exemple

Opérateur La description
ET Il s'agit de l'opérateur logique «et»
OU Il s'agit de l'opérateur logique «ou»
NE PAS C'est l'opérateur logique «non»

Opérateurs d'affectation

Le langage Batch Script fournit également des opérateurs d'affectation. Voici les opérateurs d'affectation disponibles.

Afficher l'exemple

Opérateur La description Exemple
+ = Cela ajoute l'opérande droit à l'opérande gauche et affecte le résultat à l'opérande gauche

Ensemble / A a = 5

a + = 3

La sortie sera 8

- = Cela soustrait l'opérande droit de l'opérande gauche et attribue le résultat à l'opérande gauche

Ensemble / A a = 5

a - = 3

La sortie sera 2

* = Cela multiplie l'opérande de droite par l'opérande de gauche et affecte le résultat à l'opérande de gauche

Ensemble / A a = 5

a * = 3

La sortie sera de 15

/ = Cela divise l'opérande de gauche par l'opérande de droite et affecte le résultat à l'opérande de gauche

Ensemble / A a = 6

a / = 3

La sortie sera 2

% = Cela prend le module en utilisant deux opérandes et affecte le résultat à l'opérande de gauche

Ensemble / A a = 5

un% = 3

La sortie sera 2

Opérateurs au niveau du bit

Les opérateurs au niveau du bit sont également possibles dans le script batch. Voici les opérateurs disponibles.

Afficher l'exemple

Opérateur La description
& Il s’agit de l’opérateur «et» au niveau du bit
| Il s’agit de l’opérateur «ou» au niveau du bit
^ Il s’agit de l’opérateur «xor» ou exclusif ou au niveau du bit

Voici la table de vérité présentant ces opérateurs.

p q p & q p | q p ^ q
0 0 0 0 0
0 1 0 1 1
1 1 1 1 0
1 0 0 1 1

La date et l'heure dans les scripts DOS ont les deux commandes de base suivantes pour récupérer la date et l'heure du système.

DATE

Cette commande obtient la date système.

Syntaxe

DATE

Exemple

@echo off 
echo %DATE%

Production

La date actuelle sera affichée dans l'invite de commande. Par exemple,

Mon 12/28/2015

TEMPS

Cette commande définit ou affiche l'heure.

Syntaxe

TIME

Exemple

@echo off 
echo %TIME%

Production

L'heure actuelle du système sera affichée. Par exemple,

22:06:52.87

Voici quelques implémentations qui peuvent être utilisées pour obtenir la date et l'heure dans différents formats.

Date au format année-mois-jour

Exemple

@echo off 
echo/Today is: %year%-%month%-%day% 
goto :EOF 
setlocal ENABLEEXTENSIONS 
set t = 2&if "%date%z" LSS "A" set t = 1 

for /f "skip=1 tokens = 2-4 delims = (-)" %%a in ('echo/^|date') do ( 
   for /f "tokens = %t%-4 delims=.-/ " %%d in ('date/t') do ( 
      set %%a=%%d&set %%b=%%e&set %%c=%%f)) 
endlocal&set %1=%yy%&set %2=%mm%&set %3=%dd%&goto :EOF

Production

La commande ci-dessus produit la sortie suivante.

Today is: 2015-12-30

Il existe trois «fichiers» universels pour la saisie au clavier, l'impression de texte à l'écran et les erreurs d'impression à l'écran. Le fichier «Standard In», appeléstdin, contient l'entrée du programme / script. Le fichier «Standard Out», appeléstdout, est utilisé pour écrire la sortie à afficher à l'écran. Enfin, le fichier «Standard Err», ditstderr, contient tous les messages d'erreur à afficher à l'écran.

Chacun de ces trois fichiers standard, également appelés flux standard, est référencé à l'aide des numéros 0, 1 et 2. Stdin est le fichier 0, stdout est le fichier 1 et stderr est le fichier 2.

Redirection de la sortie (Stdout et Stderr)

Une pratique courante dans les fichiers de commandes consiste à envoyer la sortie d'un programme vers un fichier journal. L'opérateur> envoie ou redirige stdout ou stderr vers un autre fichier. L'exemple suivant montre comment cela peut être fait.

Dir C:\ > list.txt

Dans l'exemple ci-dessus, le stdout de la commande Dir C: \ est redirigé vers le fichier list.txt.

Si vous ajoutez le numéro 2 au filtre de redirection, il redirige le stderr dans le fichier lists.txt.

Dir C:\ 2> list.txt

On peut même combiner le stdout et stderrflux en utilisant le numéro de fichier et le préfixe «&». Voici un exemple.

DIR C:\ > lists.txt 2>&1

Suppression de la sortie de programme

Le pseudo fichier NUL est utilisé pour supprimer toute sortie d'un programme. L'exemple suivant montre que la sortie de la commande DIR est ignorée en envoyant la sortie à NUL.

Dir C:\ > NUL

Stdin

Pour travailler avec le Stdin, vous devez utiliser une solution de contournement pour y parvenir. Cela peut être fait en redirigeant le propre stdin de l'invite de commande, appelé CON.

L'exemple suivant montre comment vous pouvez rediriger la sortie vers un fichier appelé lists.txt. Après avoir exécuté la commande ci-dessous, l'invite de commande prendra toutes les entrées entrées par l'utilisateur jusqu'à ce qu'elle obtienne un caractère EOF. Plus tard, il envoie toutes les entrées au fichier lists.txt.

TYPE CON > lists.txt

Par défaut, lorsqu'une exécution de ligne de commande est terminée, elle doit renvoyer zéro lorsque l'exécution réussit ou non nulle lorsque l'exécution échoue. Lorsqu'un script batch renvoie une valeur différente de zéro après l'échec de l'exécution, la valeur différente de zéro indiquera quel est le numéro d'erreur. Nous utiliserons ensuite le numéro d'erreur pour déterminer la nature de l'erreur et la résoudre en conséquence.

Voici le code de sortie commun et leur description.

Code d'erreur La description
0 Programme terminé avec succès.
1 Fonction incorrecte. Indique que Action a tenté d'exécuter une commande non reconnue dans l'invite de commande Windows cmd.exe.
2 Le système ne peut pas trouver le fichier spécifié. Indique que le fichier est introuvable à l'emplacement spécifié.
3 Le système ne peut pas trouver le chemin spécifié. Indique que le chemin spécifié est introuvable.
5 L'accès est refusé. Indique que l'utilisateur n'a aucun droit d'accès à la ressource spécifiée.

9009

0x2331

Le programme n'est pas reconnu comme une commande interne ou externe, un programme utilisable ou un fichier de commandes. Indique que la commande, le nom de l'application ou le chemin a été mal orthographié lors de la configuration de l'action.

221225495

0xC0000017

-1073741801

La mémoire virtuelle disponible est insuffisante.

Cela indique que Windows n'a plus de mémoire.

3221225786

0xC000013A

-1073741510

L'application s'est arrêtée à la suite d'un CTRL + C. Indique que l'application a été arrêtée par l'entrée au clavier de l'utilisateur CTRL + C ou CTRL + Pause ou par la fermeture de la fenêtre d'invite de commande.

3221225794

0xC0000142

-1073741502

L'application n'a pas pu être démarrée correctement. Indique que l'application a été lancée sur un bureau sur lequel l'utilisateur actuel n'a aucun droit d'accès. Une autre cause possible est que gdi32.dll ou user32.dll n'a pas pu s'initialiser.

Niveau d'erreur

La variable d'environnement% ERRORLEVEL% contient le code retour du dernier programme ou script exécuté.

Par défaut, le moyen de vérifier le NIVEAU D'ERREUR est via le code suivant.

Syntaxe

IF %ERRORLEVEL% NEQ 0 ( 
   DO_Something 
)

Il est courant d'utiliser la commande EXIT / B% ERRORLEVEL% à la fin du fichier batch pour renvoyer les codes d'erreur du fichier batch.

EXIT / B à la fin du fichier batch arrêtera l'exécution d'un fichier batch.

Utilisez EXIT / B <exitcodes> à la fin du fichier de commandes pour renvoyer des codes de retour personnalisés.

La variable d'environnement% ERRORLEVEL% contient le dernier niveau d'erreur dans le fichier de commandes, qui correspond aux derniers codes d'erreur de la dernière commande exécutée. Dans le fichier de commandes, il est toujours recommandé d'utiliser des variables d'environnement au lieu de valeurs constantes, car la même variable est étendue à différentes valeurs sur différents ordinateurs.

Regardons un exemple rapide sur la façon de vérifier les codes d'erreur à partir d'un fichier de commandes.

Exemple

Supposons que nous ayons un fichier batch appelé Find.cmd qui a le code suivant. Dans le code, nous avons clairement mentionné que si nous ne trouvons pas le fichier nommé lists.txt, nous devrions définir le niveau d'erreur sur 7. De même, si nous voyons que la variable userprofile n'est pas définie, nous devons définir le code errorlevel sur 9.

if not exist c:\lists.txt exit 7 
if not defined userprofile exit 9 
exit 0

Supposons que nous ayons un autre fichier appelé App.cmd qui appelle d'abord Find.cmd. Maintenant, si Find.cmd renvoie une erreur dans laquelle il définit le niveau d'erreur sur plus de 0, il quitterait le programme. Dans le fichier de commandes suivant, après avoir appelé la recherche Find.cnd, il vérifie en fait si le niveau d'erreur est supérieur à 0.

Call Find.cmd

if errorlevel gtr 0 exit 
echo “Successful completion”

Production

Dans le programme ci-dessus, nous pouvons avoir les scénarios suivants comme sortie -

  • Si le fichier c: \ lists.txt n'existe pas, rien ne sera affiché dans la sortie de la console.

  • Si la variable userprofile n'existe pas, rien ne sera affiché dans la sortie de la console.

  • Si les deux conditions ci-dessus sont satisfaites, la chaîne «Achèvement réussi» sera affichée dans l'invite de commande.

Boucles

Dans le chapitre sur la prise de décision, nous avons vu des instructions qui ont été exécutées les unes après les autres de manière séquentielle. En outre, les implémentations peuvent également être effectuées dans Batch Script pour modifier le flux de contrôle dans la logique d'un programme. Ils sont ensuite classés en flux d'énoncés de contrôle.

S. Non Boucles et description
1 Pendant la mise en œuvre de la déclaration

Il n'y a pas d'instruction while directe disponible dans Batch Script, mais nous pouvons faire une implémentation de cette boucle très facilement en utilisant l'instruction if et les étiquettes.

2 Instruction For - Implémentations de liste

La construction "FOR" offre des capacités de bouclage pour les fichiers batch. Voici la construction commune de l'instruction «for» pour travailler avec une liste de valeurs.

3 Boucle à travers les plages

L'instruction «for» a également la possibilité de parcourir une plage de valeurs. Voici la forme générale de la déclaration.

4 Implémentation classique pour la boucle

Voici l'instruction classique «pour» disponible dans la plupart des langages de programmation.

Lecture en boucle des arguments de ligne de commande

L'instruction «for» peut également être utilisée pour vérifier les arguments de ligne de commande. L'exemple suivant montre comment l'instruction 'for' peut être utilisée pour parcourir les arguments de ligne de commande.

Exemple

@ECHO OFF 
:Loop 

IF "%1"=="" GOTO completed 
FOR %%F IN (%1) DO echo %%F 
SHIFT 
GOTO Loop 
:completed

Production

Supposons que notre code ci-dessus est stocké dans un fichier appelé Test.bat. La commande ci-dessus produira la sortie suivante si le fichier de commandes transmet les arguments de ligne de commande de 1, 2 et 3 comme Test.bat 1 2 3.

1 
2 
3

S. Non Boucles et description
1 Mise en œuvre de l'instruction Break

L'instruction break est utilisée pour modifier le flux de contrôle à l'intérieur des boucles dans n'importe quel langage de programmation. L'instruction break est normalement utilisée dans les constructions en boucle et est utilisée pour provoquer l'arrêt immédiat de la boucle englobante la plus interne.

Une fonction est un ensemble d'instructions organisées ensemble pour effectuer une tâche spécifique. Dans les scripts batch, une approche similaire est adoptée pour regrouper des instructions logiques pour former une fonction.

Comme tout autre langage, les fonctions de Batch Script suivent la même procédure -

  • Function Declaration - Il informe le compilateur du nom, du type de retour et des paramètres d'une fonction.

  • Function Definition - Il fournit le corps réel de la fonction.

Définition de fonction

Dans Batch Script, une fonction est définie à l'aide de l'instruction label. Lorsqu'une fonction est nouvellement définie, elle peut prendre une ou plusieurs valeurs comme «paramètres» d'entrée de la fonction, traiter les fonctions dans le corps principal et renvoyer les valeurs aux fonctions en tant que «types de retour» de sortie.

Chaque fonction a un nom de fonction, qui décrit la tâche exécutée par la fonction. Pour utiliser une fonction, vous «appelez» cette fonction avec son nom et passez ses valeurs d'entrée (appelées arguments) qui correspondent aux types de paramètres de la fonction.

Voici la syntaxe d'une fonction simple.

:function_name 
Do_something 
EXIT /B 0
  • Le nom_fonction est le nom donné à la fonction qui devrait avoir une signification correspondant à ce que fait réellement la fonction.

  • L'instruction EXIT est utilisée pour garantir que la fonction se termine correctement.

Voici un exemple de fonction simple.

Exemple

:Display 
SET /A index=2 
echo The value of index is %index% 
EXIT /B 0
S. Non Fonctions et description
1 Appeler une fonction

Une fonction est appelée dans Batch Script à l'aide de la commande call.

2 Fonctions avec paramètres

Les fonctions peuvent fonctionner avec des paramètres en les passant simplement lors d'un appel à la fonction.

3 Fonctions avec valeurs de retour

Les fonctions peuvent fonctionner avec des valeurs de retour en passant simplement des noms de variables

4 Variables locales dans les fonctions

Les variables locales dans les fonctions peuvent être utilisées pour éviter les conflits de nom et conserver les modifications de variable locales à la fonction.

5 Fonctions récursives

La possibilité d'encapsuler complètement le corps d'une fonction en gardant les changements de variable locaux à la fonction et invisibles pour l'appelant.

6 E / S de fichier

Dans Batch Script, il est possible d'effectuer les opérations d'E / S de fichier normales qui seraient attendues dans n'importe quel langage de programmation.

sept Création de fichiers

La création d'un nouveau fichier se fait à l'aide du filtre de redirection>. Ce filtre peut être utilisé pour rediriger n'importe quelle sortie vers un fichier.

8 Écriture dans des fichiers

L'écriture de contenu dans les fichiers se fait également à l'aide du filtre de redirection>. Ce filtre peut être utilisé pour rediriger n'importe quelle sortie vers un fichier.

9 Ajout aux fichiers

L'écriture de contenu dans des fichiers se fait également à l'aide du double filtre de redirection >>. Ce filtre peut être utilisé pour ajouter n'importe quelle sortie à un fichier.

dix Lecture à partir de fichiers

La lecture des fichiers dans un script batch se fait via l'utilisation de la commande FOR loop pour parcourir chaque ligne définie dans le fichier à lire.

11 Suppression de fichiers

Pour supprimer des fichiers, Batch Script fournit la commande DEL.

12 Renommer les fichiers

Pour renommer les fichiers, Batch Script fournit la commande REN ou RENAME.

13 Déplacer des fichiers

Pour déplacer des fichiers, Batch Script fournit la commande MOVE.

14 Fichiers batch - Tuyaux

L'opérateur de tube (|) prend la sortie (par défaut, STDOUT) d'une commande et la dirige vers l'entrée (par défaut, STDIN) d'une autre commande.

15 Fichiers batch - Entrées

Lorsqu'un fichier batch est exécuté, il vous donne la possibilité de transmettre des paramètres de ligne de commande qui peuvent ensuite être lus dans le programme pour un traitement ultérieur.

16 Utilisation de l'opérateur SHIFT

L'une des limites des arguments de ligne de commande est qu'il ne peut accepter que des arguments jusqu'à% 9. Prenons un exemple de cette limitation.

17 Dossiers

Dans Batch Script, il est possible d'effectuer les opérations normales basées sur des dossiers qui seraient attendues dans n'importe quel langage de programmation.

18 Créer des dossiers

La création d'un dossier se fait à l'aide de la commande MD (Make directory).

19 Liste du contenu du dossier

La liste du contenu du dossier peut être effectuée avec la commande dir. Cette commande vous permet de voir les fichiers et répertoires disponibles dans le répertoire courant.

20 Suppression de dossiers

Pour la suppression de dossiers, Batch Scripting fournit la commande DEL.

21 Renommer les dossiers

Pour renommer des dossiers, Batch Script fournit la commande REN ou RENAME.

22 Déplacement de dossiers

Pour déplacer des dossiers, Batch Script fournit la commande MOVE.

Dans ce chapitre, nous aborderons les différents processus impliqués dans Batch Script.

Affichage de la liste des processus en cours d'exécution

Dans Batch Script, la commande TASKLIST peut être utilisée pour obtenir la liste des processus en cours d'exécution dans un système.

Syntaxe

TASKLIST [/S system [/U username [/P [password]]]] [/M [module] | /SVC | /V] [/FI filter]
[/FO format] [/NH]
S.No. Options et description
1.

/S system

Spécifie le système distant auquel se connecter

2.

/U

[domain\]user

Spécifie le contexte utilisateur dans lequel la commande doit s'exécuter.

3.

/P [password]

Spécifie le mot de passe pour le contexte utilisateur donné. Invite à saisir si omis.

4.

/M [module]

Répertorie toutes les tâches utilisant actuellement le nom exe / dll donné. Si le nom du module n'est pas spécifié, tous les modules chargés sont affichés.

5.

/SVC

Affiche les services hébergés dans chaque processus.

6.

/V

Affiche des informations détaillées sur les tâches.

sept.

/FI filter

Affiche un ensemble de tâches qui correspondent à un critère donné spécifié par le filtre.

8.

/FO format

Spécifie le format de sortie. Valeurs valides: "TABLE", "LIST", "CSV".

9.

/NH

Spécifie que «l'en-tête de colonne» ne doit pas apparaître dans la sortie. Valable uniquement pour les formats "TABLE" et "CSV".

Exemples

TASKLIST

La commande ci-dessus obtiendra la liste de tous les processus en cours d'exécution sur votre système local. Voici un instantané de la sortie qui est rendue lorsque la commande ci-dessus est exécutée telle quelle. Comme vous pouvez le voir dans la sortie suivante, non seulement vous obtenez les différents processus en cours d'exécution sur votre système, mais vous obtenez également l'utilisation de la mémoire de chaque processus.

Image Name                    PID       Session Name       Session#     Mem Usage
========================= ========    ================ =========== ============
System Idle Process             0        Services            0              4 K
System                          4        Services            0            272 K
smss.exe                      344        Services            0          1,040 K
csrss.exe                     528        Services            0          3,892 K
csrss.exe                     612        Console             1         41,788 K
wininit.exe                   620        Services            0          3,528 K
winlogon.exe                  648        Console             1          5,884 K
services.exe                  712        Services            0          6,224 K
lsass.exe                     720        Services            0          9,712 K
svchost.exe                   788        Services            0         10,048 K
svchost.exe                   832        Services            0          7,696 K
dwm.exe                       916        Console             1        117,440 K
nvvsvc.exe                    932        Services            0          6,692 K
nvxdsync.exe                  968        Console             1         16,328 K
nvvsvc.exe                    976        Console             1         12,756 K
svchost.exe                  1012        Services            0         21,648 K
svchost.exe                   236        Services            0         33,864 K
svchost.exe                   480        Services            0         11,152 K
svchost.exe                  1028        Services            0         11,104 K
svchost.exe                  1048        Services            0         16,108 K
wlanext.exe                  1220        Services            0         12,560 K
conhost.exe                  1228        Services            0          2,588 K
svchost.exe                  1276        Services            0         13,888 K
svchost.exe                  1420        Services            0         13,488 K
spoolsv.exe                  1556        Services            0          9,340 K

tasklist > process.txt

La commande ci-dessus prend la sortie affichée par tasklist et l'enregistre dans le fichier process.txt.

tasklist /fi "memusage gt 40000"

La commande ci-dessus ne récupère que les processus dont la mémoire est supérieure à 40 Mo. Voici un exemple de sortie qui peut être rendu.

Image Name                    PID      Session Name     Session#     Mem Usage
=========================   ======== ================ =========== ============
dwm.exe                        916     Console             1        127,912 K
explorer.exe                  2904     Console             1        125,868 K
ServerManager.exe             1836     Console             1         59,796 K
WINWORD.EXE                   2456     Console             1        144,504 K
chrome.exe                    4892     Console             1        123,232 K
chrome.exe                    4976     Console             1         69,412 K
chrome.exe                    1724     Console             1         76,416 K
chrome.exe                    3992     Console             1         56,156 K
chrome.exe                    1168     Console             1        233,628 K
chrome.exe                     816     Console             1         66,808 K

Tuer un processus particulier

Permet à un utilisateur exécutant Microsoft Windows XP Professionnel, Windows 2003 ou une version ultérieure de supprimer une tâche à partir d'une ligne de commande Windows par ID de processus (PID) ou nom d'image. La commande utilisée à cet effet est la commande TASKILL.

Syntaxe

TASKKILL [/S system [/U username [/P [password]]]] { [/FI filter] 
[/PID processid | /IM imagename] } [/T] [/F]
S.No. Options et description
1.

/S system

Spécifie le système distant auquel se connecter

2.

/U

[domain\]user

Spécifie le contexte utilisateur dans lequel la commande doit s'exécuter.

3.

/P [password]

Spécifie le mot de passe pour le contexte utilisateur donné. Invite à saisir si omis.

4.

/FI

FilterName

Applique un filtre pour sélectionner un ensemble de tâches. Permet d'utiliser "*". ex. imagename eq acme * Voir les filtres ci-dessous pour plus d'informations et des exemples.

5.

/PID

processID

Spécifie le PID du processus à terminer. Utilisez TaskList pour obtenir le PID.

6.

/IM

ImageName

Spécifie le nom d'image du processus à arrêter. Le caractère générique '*' peut être utilisé pour spécifier toutes les tâches ou tous les noms d'image.

sept.

/T

Met fin au processus spécifié et à tous les processus enfants qui ont été démarrés par lui.

8.

/F

Spécifie de forcer l'arrêt du ou des processus.

Exemples

taskkill /f /im notepad.exe

La commande ci-dessus tue la tâche ouverte du bloc-notes, si elle est ouverte.

taskill /pid 9214

La commande ci-dessus tue un processus qui a un processus de 9214.

Démarrer un nouveau processus

Les scripts DOS ont également la possibilité de démarrer un nouveau processus. Ceci est réalisé en utilisant la commande START.

Syntaxe

START "title" [/D path] [options] "command" [parameters]

  • title - Texte de la barre de titre de la fenêtre CMD (obligatoire.)

  • path - Répertoire de départ.

  • command - La commande, le fichier batch ou le programme exécutable à exécuter.

  • parameters - Les paramètres passés à la commande.

S.No. Options et description
1.

/MIN

Fenêtre de démarrage réduite

2.

/MAX

Fenêtre de démarrage agrandie.

3.

/LOW

Utilisez la classe de priorité IDLE.

4.

/NORMAL

Utilisez la classe de priorité NORMAL.

5.

/ABOVENORMAL

Utilisez la classe de priorité ABOVENORMAL.

6.

/BELOWNORMAL

Utilisez la classe de priorité BELOWNORMAL.

sept.

/HIGH

Utilisez la classe de priorité HIGH.

8.

/REALTIME

Utilisez la classe de priorité REALTIME.

Exemples

START "Test Batch Script" /Min test.bat

La commande ci-dessus exécutera le script batch test.bat dans une nouvelle fenêtre. Les fenêtres démarreront en mode réduit et porteront également le titre «Test Batch Script».

START "" "C:\Program Files\Microsoft Office\Winword.exe" "D:\test\TESTA.txt"

La commande ci-dessus exécutera effectivement Microsoft Word dans un autre processus, puis ouvrira le fichier TESTA.txt dans MS Word.

Les alias consistent à créer des raccourcis ou des mots-clés pour les commandes existantes. Supposons que si nous voulions exécuter la commande ci-dessous qui n'est rien d'autre que la commande de liste de répertoires avec l'option / w pour ne pas afficher tous les détails nécessaires dans une liste de répertoires.

Dir /w

Supposons que nous devions créer un raccourci vers cette commande comme suit.

dw = dir /w

Lorsque nous voulons exécuter le dir /w commande, nous pouvons simplement taper le mot dw. Le mot «dw» est maintenant devenu un alias de la commande Dir / w.

Créer un alias

Les alias sont gérés en utilisant le doskey commander.

Syntaxe

DOSKEY [options] [macroname=[text]]

  • macroname - Un nom court pour la macro.

  • text - Les commandes que vous souhaitez rappeler.

Voici la description des options qui peuvent être présentées à la commande DOSKEY.

S.No. Options et description
1.

/REINSTALL

Installe une nouvelle copie de Doskey

2.

/LISTSIZE = size

Définit la taille de la mémoire tampon de l'historique des commandes.

3.

/MACROS

Affiche toutes les macros Doskey.

4.

/MACROS:ALL

Affiche toutes les macros Doskey pour tous les exécutables qui ont des macros Doskey.

5.

/MACROS:exename

Affiche toutes les macros Doskey pour l'exécutable donné.

6.

/HISTORY

Affiche toutes les commandes stockées en mémoire.

sept.

/INSERT

Spécifie que le nouveau texte que vous tapez est inséré dans l'ancien texte.

8.

/OVERSTRIKE

Spécifie que le nouveau texte remplace l'ancien texte.

9.

/EXENAME = exename

Spécifie l'exécutable.

dix.

/MACROFILE = filename

Spécifie un fichier de macros à installer.

11.

macroname

Spécifie un nom pour une macro que vous créez.

12.

text

Spécifie les commandes que vous souhaitez enregistrer.

Exemple

Créez un nouveau fichier appelé keys.bat et entrez les commandes suivantes dans le fichier. Les commandes ci-dessous créent deux alias, un pour la commande cd, qui va automatiquement dans le répertoire appelé test. Et l'autre est pour la commande dir.

@echo off
doskey cd = cd/test
doskey d = dir

Une fois la commande exécutée, vous pourrez exécuter ces alias dans l'invite de commande.

Production

La capture d'écran suivante montre qu'après l'exécution du fichier batch créé ci-dessus, vous pouvez entrer librement la commande 'd' et elle vous donnera la liste des répertoires, ce qui signifie que votre alias a été créé.

Supprimer un alias

Un alias ou une macro peut être supprimé en définissant la valeur de la macro sur NULL.

Exemple

@echo off
doskey cd = cd/test
doskey d = dir
d=

Dans l'exemple ci-dessus, nous définissons d'abord la macro d sur d = dir. Après quoi, nous le définissons sur NULL. Étant donné que nous avons défini la valeur de d sur NULL, la macro d sera supprimée.

Remplacement d'un alias

Un alias ou une macro peut être remplacé en définissant la valeur de la macro sur la nouvelle valeur souhaitée.

Exemple

@echo off
doskey cd = cd/test
doskey d = dir

d = dir /w

Dans l'exemple ci-dessus, nous définissons d'abord la macro d sur d = dir. Après quoi, nous le définissons sur dir / w. Puisque nous avons défini la valeur de d sur une nouvelle valeur, l'alias «d» prendra désormais la nouvelle valeur.

Windows dispose désormais d'une bibliothèque améliorée qui peut être utilisée dans Batch Script pour travailler avec des périphériques connectés au système. Ceci est connu sous le nom de console de périphérique - DevCon.exe.

Les développeurs et testeurs de pilotes Windows peuvent utiliser DevCon pour vérifier qu'un pilote est installé et configuré correctement, y compris les fichiers INF, la pile de pilotes, les fichiers de pilotes et le package de pilotes appropriés. Vous pouvez également utiliser les commandes DevCon (activer, désactiver, installer, démarrer, arrêter et continuer) dans des scripts pour tester le pilote.DevCon est un outil de ligne de commande qui exécute des fonctions de gestion des périphériques sur les ordinateurs locaux et distants.

Afficher les informations sur les pilotes et les périphériques DevCon peut afficher les propriétés suivantes des pilotes et des périphériques sur les ordinateurs locaux et les ordinateurs distants (exécutant Windows XP et versions antérieures) -

  • ID de matériel, ID compatibles et ID d'instance de périphérique. Ces identifiants sont décrits en détail dans les chaînes d'identification des appareils.

  • Classes de configuration de périphérique.

  • Les périphériques d'une classe de configuration de périphérique.

  • Fichiers INF et fichiers de pilote de périphérique.

  • Détails des packages de pilotes.

  • Ressources matérielles.

  • Statut du périphérique.

  • Pile de pilotes attendue.

  • Packages de pilotes tiers dans le magasin de pilotes.

  • Rechercher des appareils DevCon peut rechercher des appareils installés et désinstallés sur un ordinateur local ou distant par ID matériel, ID d'instance d'appareil ou classe de configuration d'appareil.

  • Modifier les paramètres du périphérique DevCon peut modifier l'état ou la configuration des périphériques Plug and Play (PnP) sur l'ordinateur local des manières suivantes:

    • Activez un appareil.

    • Désactivez un appareil.

    • Mettre à jour les pilotes (interactifs et non interactifs).

    • Installez un périphérique (créez un devnode et installez un logiciel).

    • Supprimez un périphérique de l'arborescence des périphériques et supprimez sa pile de périphériques.

    • Réanalyser les périphériques Plug and Play.

    • Ajoutez, supprimez et réorganisez les ID matériels des périphériques énumérés par la racine.

    • Modifiez les pilotes de filtre supérieur et inférieur pour une classe de configuration de périphérique.

    • Ajoutez et supprimez des packages de pilotes tiers du magasin de pilotes.

DevCon (DevCon.exe) est inclus lorsque vous installez le WDK, Visual Studio et le SDK Windows pour les applications de bureau. Le kit DevCon.exe est disponible aux emplacements suivants une fois installé.

%WindowsSdkDir%\tools\x64\devcon.exe
%WindowsSdkDir%\tools\x86\devcon.exe
%WindowsSdkDir%\tools\arm\devcon.exe

Syntaxe

devcon [/m:\\computer] [/r] command [arguments]

  • /m:\\computer- Exécute la commande sur l'ordinateur distant spécifié. Les backslashes sont obligatoires.

  • /r- Redémarrage conditionnel. Redémarre le système après avoir terminé une opération uniquement si un redémarrage est nécessaire pour rendre une modification effective.

  • command - Spécifie une commande DevCon.

  • Pour répertorier et afficher des informations sur les périphériques sur l'ordinateur, utilisez les commandes suivantes:

    • HwID DevCon

    • Classes DevCon

    • Liste DevCon

    • Fichiers de pilotes DevCon

    • Nœuds de pilote DevCon

    • Ressources DevCon

    • Pile DevCon

    • Statut DevCon

    • DevCon Dp_enum

  • Pour rechercher des informations sur les périphériques sur l'ordinateur, utilisez les commandes suivantes:

    • Recherche DevCon

    • DevCon FindAll

  • Pour manipuler l'appareil ou modifier sa configuration, utilisez les commandes suivantes -

    • Activer DevCon

    • Désactiver DevCon

    • Mise à jour DevCon

    • Mise à jour DevConNI

    • Installation de DevCon

    • DevCon Supprimer

    • Nouvelle analyse DevCon

    • Redémarrage de DevCon

    • Redémarrage de DevCon

    • DevCon SetHwID

    • DevCon ClassFilter

    • DevCon Dp_add

    • DevCon Dp_delete

Exemples

Voici quelques exemples d'utilisation de la commande DevCon.

List all driver files

La commande suivante utilise l'opération DevCon DriverFiles pour répertorier les noms de fichiers des pilotes utilisés par les périphériques du système. La commande utilise le caractère générique (*) pour indiquer tous les périphériques du système. La sortie étant étendue, la commande utilise le caractère de redirection (>) pour rediriger la sortie vers un fichier de référence, driverfiles.txt.

devcon driverfiles * > driverfiles.txt

La commande suivante utilise l'opération d'état DevCon pour trouver l'état de tous les périphériques sur l'ordinateur local. Il enregistre ensuite l'état dans le fichier status.txt pour la journalisation ou un examen ultérieur. La commande utilise le caractère générique (*) pour représenter tous les périphériques et le caractère de redirection (>) pour rediriger la sortie vers le fichier status.txt.

devcon status * > status.txt

La commande suivante active tous les périphériques d'impression de l'ordinateur en spécifiant la classe de configuration de l'imprimante dans une commande DevCon Enable. La commande inclut le paramètre / r, qui redémarre le système s'il est nécessaire de rendre l'activation effective.

devcon /r enable = Printer

La commande suivante utilise l'opération d'installation DevCon pour installer un périphérique clavier sur l'ordinateur local. La commande inclut le chemin d'accès complet au fichier INF pour le périphérique (keyboard.inf) et un ID matériel (* PNP030b).

devcon /r install c:\windows\inf\keyboard.inf *PNP030b

La commande suivante analysera l'ordinateur à la recherche de nouveaux périphériques.

devcon scan

La commande suivante analysera à nouveau l'ordinateur à la recherche de nouveaux périphériques.

devcon rescan

Le registre est l'un des éléments clés d'un système Windows. Il contient de nombreuses informations sur divers aspects du système d'exploitation. Presque toutes les applications installées sur un système Windows interagissent avec le registre sous une forme ou une autre.

Le registre contient deux éléments de base: les clés et les valeurs. Registry keys sont des objets conteneurs similaires aux dossiers. Registry valuessont des objets non-conteneurs similaires aux fichiers. Les clés peuvent contenir des valeurs ou d'autres clés. Les clés sont référencées avec une syntaxe similaire aux noms de chemin de Windows, en utilisant des barres obliques inverses pour indiquer les niveaux de hiérarchie.

Ce chapitre examine diverses fonctions telles que l'interrogation de valeurs, l'ajout, la suppression et la modification de valeurs du registre.

S. Non Types de registre et description
1 Lecture à partir du registre

La lecture à partir du registre se fait via la commande REG QUERY.

2 Ajout au registre

L'ajout au registre se fait via la commande REG ADD.

3 Suppression du registre

La suppression du registre se fait via la commande REG DEL.

4 Copie des clés de registre

La copie à partir du registre se fait via la commande REG COPY.

5 Comparaison des clés de registre

La comparaison des clés de registre se fait via la commande REG COMPARE.

Le script par lots a la possibilité de travailler avec les paramètres réseau. La commande NET est utilisée pour mettre à jour, corriger ou afficher les paramètres réseau ou réseau. Ce chapitre examine les différentes options disponibles pour la commande net.

S. Non Commandes et description NET
1 COMPTES NETS

Affichez le mot de passe actuel et les restrictions de connexion pour l'ordinateur.

2 CONFIG NET

Affiche les paramètres actuels de votre serveur ou groupe de travail.

3 ORDINATEUR NET

Ajoute ou supprime un ordinateur connecté au contrôleur de domaine Windows.

4 UTILISATEUR NET

Cette commande peut être utilisée pour les opérations suivantes

Afficher les détails d'un compte utilisateur particulier.

5 NET STOP / START

Cette commande est utilisée pour arrêter et démarrer un service particulier.

6 STATISTIQUES NETTES

Afficher les statistiques réseau du poste de travail ou du serveur.

sept UTILISATION NET

Connecte ou déconnecte votre ordinateur d'une ressource partagée ou affiche des informations sur vos connexions.

L'impression peut également être contrôlée depuis Batch Script via la commande NET PRINT.

Syntaxe

PRINT [/D:device] [[drive:][path]filename[...]]

Où / D: périphérique - Spécifie un périphérique d'impression.

Exemple

print c:\example.txt /c /d:lpt1

La commande ci-dessus imprimera le fichier example.txt sur le port parallèle lpt1.

Contrôle d'imprimante en ligne de commande

À partir de Windows 2000, de nombreux paramètres d'imprimante, mais pas tous, peuvent être configurés à partir de la ligne de commande de Windows à l'aide de PRINTUI.DLL et RUNDLL32.EXE

Syntaxe

RUNDLL32.EXE PRINTUI.DLL,PrintUIEntry [ options ] [ @commandfile ]

Lorsque certaines des options disponibles sont les suivantes -

  • /dl - Supprimer l'imprimante locale.

  • /dn - Supprimer la connexion d'imprimante réseau.

  • /dd - Supprimer le pilote d'imprimante.

  • /e - Afficher les préférences d'impression.

  • /f[file] - Soit un fichier inf, soit un fichier de sortie.

  • /F[file] - Emplacement d'un fichier INF dont le fichier INF spécifié avec / f peut dépendre.

  • /ia - Installez le pilote d'imprimante à l'aide du fichier inf.

  • /id - Installez le pilote d'imprimante à l'aide de l'assistant d'ajout de pilote d'imprimante.

  • /if - Installez l'imprimante à l'aide du fichier inf.

  • /ii - Installez l'imprimante à l'aide de l'assistant d'ajout d'imprimante avec un fichier inf.

  • /il - Installez l'imprimante à l'aide de l'assistant d'ajout d'imprimante.

  • /in - Ajouter une connexion d'imprimante réseau.

  • /ip - Installez l'imprimante à l'aide de l'assistant d'installation d'imprimante réseau.

  • /k - Imprimer la page de test sur l'imprimante spécifiée, ne peut pas être combiné avec la commande lors de l'installation d'une imprimante.

  • /l[path] - Chemin de la source du pilote d'imprimante.

  • /m[model] - Nom du modèle du pilote d'imprimante.

  • /n[name] - Nom de l'imprimante.

  • /o - Afficher la vue de la file d'attente de l'imprimante.

  • /p - Afficher les propriétés de l'imprimante.

  • /Ss - Stockez les paramètres de l'imprimante dans un fichier.

  • /Sr - Restaurez les paramètres de l'imprimante à partir d'un fichier.

  • /y - Définissez l'imprimante comme imprimante par défaut.

  • /Xg - Obtenez les paramètres de l'imprimante.

  • /Xs - Définissez les paramètres de l'imprimante.

Test de l'existence d'une imprimante

Il peut y avoir des cas dans lesquels vous pourriez être connecté à une imprimante réseau au lieu d'une imprimante locale. Dans de tels cas, il est toujours utile de vérifier si une imprimante existe en premier lieu avant d'imprimer.

L'existence d'une imprimante peut être évaluée à l'aide du RUNDLL32.EXE PRINTUI.DLL qui est utilisé pour contrôler la plupart des paramètres de l'imprimante.

Exemple

SET PrinterName = Test Printer
SET file=%TEMP%\Prt.txt
RUNDLL32.EXE PRINTUI.DLL,PrintUIEntry /Xg /n "%PrinterName%" /f "%file%" /q

IF EXIST "%file%" (
   ECHO %PrinterName% printer exists
) ELSE (
   ECHO %PrinterName% printer does NOT exists
)

La commande ci-dessus fera ce qui suit -

  • Il définira d'abord le nom de l'imprimante et définira un nom de fichier qui contiendra les paramètres de l'imprimante.

  • Les commandes RUNDLL32.EXE PRINTUI.DLL seront utilisées pour vérifier si l'imprimante existe réellement en envoyant les paramètres de configuration du fichier au fichier Prt.txt

Très souvent, vous pouvez rencontrer des problèmes lors de l'exécution de fichiers de commandes et le plus souvent, vous devrez déboguer vos fichiers de commandes d'une manière ou d'une autre pour déterminer le problème avec le fichier de commandes lui-même. Voici quelques-unes des techniques qui peuvent aider au débogage des fichiers de script par lots.

Messages d'erreur

Pour découvrir la source du message, procédez comme suit -

Step 1 - REM sur la ligne @ECHO OFF, c'est-à-dire REM @ECHO OFF ou :: @ECHO OFF.

Step 2 - Exécutez le fichier de commandes avec les paramètres de ligne de commande requis, en redirigeant toutes les sorties vers un fichier journal pour une comparaison ultérieure.

test.bat > batch.log 2>&1

Step 3 - Recherchez dans le fichier batch.log les messages d'erreur

Step 4- Vérifiez la ligne précédente pour toute commande inattendue ou invalide, commutateur (s) de ligne de commande ou valeur (s); portez une attention particulière aux valeurs de toutes les variables d'environnement utilisées dans la commande.

Step 5 - Corrigez l'erreur et répétez ce processus jusqu'à ce que tous les messages d'erreur aient disparu.

Lignes de commande complexes

Les commandes incorrectement redirigées, comme par exemple les commandes "imbriquées" FIND ou FINDSTR avec des chaînes de recherche incorrectes, parfois dans une boucle FOR / F, sont une autre source courante d'erreurs.

Pour vérifier la validité de ces commandes complexes, procédez comme suit:

Step 1 - Insérez des "lignes de contrôle de commande" juste avant une ligne qui utilise le jeu de commandes complexe.

Voici un exemple dans lequel la commande ECHO est insérée pour marquer où la sortie de la première commande TYPE se termine et la suivante commence.

TYPE %Temp%.\apipaorg.reg
ECHO.================================================ TYPE %Temp%.\apipaorg.reg 
| FIND 
"[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\TCPIP\Parameters\Interfaces\"

Step 2 - Suivez la procédure pour trouver les sources des messages d'erreur décrites ci-dessus.

Step 3- Faites particulièrement attention à la sortie des lignes de commande "simplifiées": La sortie est-elle au format attendu? La valeur ou la position du «jeton» est-elle conforme aux attentes?

Sous-programmes

Les sous-programmes générant des messages d'erreur posent un «défi» supplémentaire pour trouver la cause de l'erreur, car ils peuvent être appelés plusieurs fois dans le même fichier de commandes.

Pour vous aider à découvrir les causes de l'appel incorrect au sous-programme, procédez comme suit:

Step 1 - Ajouter et réinitialiser une variable de compteur au début du script -

SET Counter = 0

Step 2 - Incrémenter le compteur à chaque appel du sous-programme, en insérant la ligne suivante au début du sous-programme

SET /A Counter+=1

Step 3- Insérez une autre ligne juste après l'incrément du compteur, contenant uniquement la commande SET; cela listera toutes les variables d'environnement et leurs valeurs.

Step 4 - Suivez la procédure pour trouver les sources des messages d'erreur décrites ci-dessus.

Versions de Windows

Si vous envisagez de distribuer vos fichiers de commandes sur d'autres ordinateurs exécutant ou non la même version de Windows, vous devrez tester vos fichiers de commandes dans autant de versions de Windows que possible.

L'exemple suivant montre comment rechercher différentes versions du système d'exploitation pour vérifier les versions Windows pertinentes.

@ECHO OFF
:: Check for Windows NT 4 and later

IF NOT "%OS%"=="Windows_NT" GOTO DontRun
:: Check for Windows NT 4
VER | FIND "Windows NT" >NUL && GOTO DontRun
:: Check for Windows 2000
VER | FIND "Windows 2000" >NUL && GOTO DontRun
:: Place actual code here . . .
:: End of actual code . . .
EXIT

:DontRun
ECHO Sorry, this batch file was written for Windows XP and later versions only

La connexion est possible dans Batch Script à l'aide de la commande de redirection.

Syntaxe

test.bat > testlog.txt 2> testerrors.txt

Exemple

Créez un fichier appelé test.bat et entrez la commande suivante dans le fichier.

net statistics /Server

La commande ci-dessus a une erreur car l'option de la commande net statistics est donnée dans le mauvais sens.

Production

Si la commande avec le fichier test.bat ci-dessus est exécutée comme

test.bat > testlog.txt 2> testerrors.txt

Et vous ouvrez le fichier testerrors.txt, vous verrez l'erreur suivante.

The option /SERVER is unknown.

La syntaxe de cette commande est -

NET STATISTICS
[WORKSTATION | SERVER]

Une aide supplémentaire est disponible en tapant NET HELPMSG 3506.

Si vous ouvrez le fichier appelé testlog.txt, il vous montrera un journal des commandes exécutées.

C:\tp>net statistics /Server