Bases du fichier BAT. Commande SET - Utilisation des variables d'environnement Windows

Définit, supprime et affiche les variables d'environnement. Appelé sans paramètres, commande ensemble affiche une liste de variables d'environnement définies et leurs valeurs.

Syntaxe

ensemble [[/un [expression]] [/p [variable = ]] doubler]

Possibilités

/a Indique que le paramètre doubler est une expression numérique calculée. /p Définit la valeur variable

ligne d'entrée.

  • variable Spécifie le nom de la variable dont vous souhaitez définir ou modifier la valeur. ensemble string Définit la valeur de chaîne pour la variable spécifiée.

    /? ensemble Affiche l'aide sur la ligne de commande.

  • Remarques

    Utilisation de la commande<, >dans la console de récupération doublerÉquipe " avec d'autres paramètres est disponible dans la console de récupération. & Utiliser des caractères spéciaux" Symboles

  • , |, &, ^ sont des caractères spéciaux du shell, vous devez soit les précéder d'un caractère de contrôle (^), soit les mettre entre guillemets lorsque vous utilisez les caractères dans un paramètre

    (Par exemple, ensemble content_line

  • symbole

    ). Lorsque vous citez une chaîne contenant des caractères spéciaux, les guillemets sont considérés comme faisant partie de la valeur de la variable d'environnement. ensemble Utilisation de variables d'environnement

  • Les variables d'environnement sont utilisées pour contrôler le fonctionnement de certains fichiers et programmes de commandes et pour contrôler le fonctionnement de Windows XP et du sous-système MS-DOS. Équipe

    souvent utilisé dans le fichier Autoexec.nt pour définir des variables d'environnement.

    Afficher les paramètres d'environnement actuels ensemble Quand l'équipe

  • appelé sans paramètres, les paramètres actuels seront affichés à l'écran. Généralement, ces paramètres incluent les variables COMSPEC et PATH, qui sont utilisées pour localiser les programmes sur le disque. Deux autres variables d'environnement utilisées par Windows sont PROMPT et DIRCMD. /un

    Utilisation des paramètres /un Lorsque vous spécifiez des valeurs pour une variable et une chaîne, la valeur de la variable est ajoutée à l'environnement et la chaîne est mappée à cette variable. Si la variable existe déjà, la nouvelle valeur remplace l'ancienne valeur.

    Lorsque vous utilisez les opérateurs logiques (&& ||) ou l'opérateur reste (%), placez l'expression de chaîne entre guillemets. Toutes les chaînes non numériques de l'expression sont considérées comme des noms de variables d'environnement dont les valeurs sont converties en nombres avant le traitement. Si un nom de variable d'environnement est spécifié qui n'est pas défini dans l'environnement actuel, il est défini sur zéro, ce qui permet d'effectuer des opérations arithmétiques sur les valeurs des variables d'environnement sans utiliser % pour obtenir la valeur.

    Lors de l'exécution de la commande définir /aà partir de la ligne de commande en dehors du script de commande, la valeur finale de l'expression est imprimée.

    Les valeurs numériques sont des nombres décimaux, à l'exception des nombres préfixés par 0x pour les nombres hexadécimaux et 0 pour les nombres octaux. Ainsi, 0x12 est identique à 18 et 022. La représentation octale nécessite des précautions. Par exemple, 08 et 09 ne sont pas valides car 8 et 9 ne sont pas des chiffres octaux.

  • appelé sans paramètres, les paramètres actuels seront affichés à l'écran. Généralement, ces paramètres incluent les variables COMSPEC et PATH, qui sont utilisées pour localiser les programmes sur le disque. Deux autres variables d'environnement utilisées par Windows sont PROMPT et DIRCMD. /p

    Utilisé lorsque vous n'avez pas besoin d'activer la ligne de commande.

  • Prise en charge de l'expansion des variables d'environnement avec délai

    Ajout de la prise en charge de l'expansion des variables d'environnement avec délai. Ce support est désactivé par défaut, vous pouvez l'activer ou le désactiver à l'aide de la commande cmd/v.

  • Travailler avec des extensions de commande

    Avec les extensions de commande activées (par défaut) et la commande en cours d'exécution ensemble sans valeurs, toutes les variables d'environnement actuelles sont affichées. Si la commande est exécutée ensemble avec une valeur, les variables correspondant à cette valeur sont affichées.

  • variable Spécifie le nom de la variable dont vous souhaitez définir ou modifier la valeur. ensemble dans des fichiers batch

    Lors de la création de fichiers batch, utilisez la commande ensemble pour créer des variables et les utiliser comme variables numériques à partir de %0 à %9 . Vous pouvez également utiliser des variables de %0 à %9 comme entrée pour la commande ensemble.

  • Accéder aux variables de commande ensembleà partir de programmes de package

    Lors de l'accès à une variable à partir d'un programme batch, le nom de la variable doit être entouré de signes de pourcentage (%). Par exemple, si une variable BAUD est créée dans un programme batch, un paramètre de remplacement peut lui être associé en utilisant le nom %bauds% sur la ligne de commande.

Exemples

Pour définir une variable d'environnement nommée TEST^1, entrez la commande :

définir testVar=test^^1

Pour définir une variable d'environnement nommée TEST&1, entrez la commande :

définir testVar=test^&1

Valeur de la variable de commande ensemble définit tout ce qui suit le signe égal (=).

Lors de la saisie :

définir testVar="test^1"

Le résultat sera le suivant :

testVar="test^1"

Pour définir la variable d'environnement INCLUDE afin qu'elle soit associée à la chaîne C:\Inc (le répertoire Inc sur le lecteur C), vous pouvez utiliser la commande suivante :

La ligne C:\Inc peut être utilisée dans les fichiers batch en plaçant le nom INCLUDE entre des signes de pourcentage (%). Par exemple, dans un fichier batch, vous pouvez utiliser la commande suivante pour imprimer le contenu du répertoire pointé par la variable d'environnement INCLUDE :

Lors de l'exécution de la commande, la ligne %inclure% sera remplacé par la chaîne C:\Inc.

Vous pouvez également utiliser la commande ensemble dans un programme batch qui ajoute un nouveau répertoire à la variable d'environnement PATH. Par exemple:

@echo désactivé
rem ADDPATH.BAT ajoute un nouveau répertoire
rem à la variable d'environnement path.
définir le chemin=%1;%chemin%
ensemble

Avec les extensions de commande activées (par défaut) et la commande en cours d'exécution ensemble avec une valeur, toutes les variables d'environnement correspondant à la valeur sont affichées. Par exemple, lors de la saisie sur la ligne de commande : ensemble p, le résultat sera le suivant :

Chemin=C:\WINNT\system32;C:\WINNT;C:\WINNT\System32\Wbem
PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH
PROCESSEUR_ARCHITECTURE=x86
PROCESSOR_IDENTIFIER=x86 Famille 6 Modèle 8 Étape 1, GenuineIntel
PROCESSOR_LEVEL=6
PROCESSOR_REVISION=0801
ProgramFiles=C:\Programmes
INVITE=$P$G

Certaines techniques et fonctionnalités de travail avec la commande Set peuvent être trouvées dans la section Traitement des données arithmétiques.

Pour des questions, discussions, commentaires, suggestions, etc., vous pouvez utiliser la section forum de ce site (inscription requise).

(commandes), vous permettent de vous passer de spécifier des chemins absolus vers les répertoires. Par exemple, si nous ne connaissons pas à l’avance la lettre du lecteur système, nous pouvons toujours utiliser la variable %lecteur système%, qui renvoie la lettre de lecteur sur lequel le système d'exploitation est installé. En outre, les variables sont utilisées pour optimiser le code - un paramètre répété à plusieurs reprises (par exemple, une clé de registre) peut se voir attribuer une variable courte et être utilisé. Cet article traite en détail de diverses techniques permettant de travailler avec des variables, ainsi que des moyens de modifier et de créer de nouvelles variables. Parlons maintenant de tout dans l'ordre.

Classification des variables d'environnement
L'aide de Windows fait la distinction entre deux types de variables d'environnement : système et locale. Les variables système renvoient les mêmes valeurs pour tous les utilisateurs. Par exemple, %lecteur système%- la lettre du lecteur système, et elle est la même pour tous les utilisateurs. Mais les valeurs renvoyées par les variables locales varient en fonction de l'utilisateur connecté. Par exemple, %profilutilisateur% peut renvoyer C:\Documents and Settings\CurrentUser, où CurrentUser est le nom du compte utilisateur.

La commande vous aidera à découvrir quelles variables d'environnement du système d'exploitation sont disponibles pour vous et quelles valeurs leur sont actuellement attribuées. ENSEMBLE, lancé depuis la ligne de commande sans paramètres ( Démarrer – Exécuter – cmd – définir). Dans cet article, nous nous intéressons aux variables qui indiquent le chemin d'accès à différents dossiers (répertoires). Un peu plus sur certains d’entre eux ci-dessous :

Variable|Type|Description
%SYSTEMDRIVE%|Système|Renvoie le nom du lecteur contenant le répertoire racine du système d'exploitation Windows XP/2003 (c'est-à-dire le répertoire racine du système).
%SYSTEMROOT%, %WINDIR%|Système|Renvoie l'emplacement du répertoire racine du système d'exploitation Windows /2003
%PATH%|Système|Spécifie le chemin de recherche des fichiers exécutables.
%PROGRAMFILES%|Système|Indique le chemin d'accès au répertoire d'installation du programme (Program Files)
%COMMONPROGRAMFILES%|Système|Indique le chemin d'accès au répertoire commun du programme (Program Files\Common Files).
%TEMP% et %TMP%|Système et utilisateur|Renvoie les dossiers temporaires par défaut utilisés par les applications accessibles aux utilisateurs connectés. Certaines applications nécessitent la variable TEMP, d'autres nécessitent la variable TMP.
%USERPROFILE%|Local|Renvoie l'emplacement du profil de l'utilisateur actuel.
%ALLUSERSPROFILE%|Local|Renvoie l'emplacement du profil "Tous les utilisateurs".
%CD%|Local|Renvoie le chemin d'accès au dossier actuel.
%APPDATA%|Local|Renvoie l'emplacement par défaut des données d'application.

Utilisation de variables dans des fichiers batch
Commençons par un exemple simple :

CMD/LOT :

DEL /F /Q "%AllUsersProfile%\Main Menu\Windows Activation.lnk" DEL /F /Q "%AllUsersProfile%\Main Menu\WindowsUpdate.lnk" DEL /F /Q "%systemroot%\system32\*.scr "

Dans cet exemple, je supprime les raccourcis ci-dessus qui apparaissent dans le menu Démarrer à l'aide de la variable %Tous les profils d'utilisateurs%, ainsi que tous les fichiers avec l'extension SCR du répertoire Windows\system32, en utilisant la variable %Racine Système%. Au lieu de DEL /F /Q, comme vous l'avez compris, il peut y avoir n'importe quoi : de la commande de copie COPY à la commande pour lancer l'installation de l'application dont nous avons besoin avec tous les paramètres de ligne de commande, si nécessaire.

Dans toutes les commandes, j'ai spécifiquement utilisé des « guillemets » - ce n'est pas accidentel. Le chemin complet, y compris les variables, doit être placé entre guillemets si vous utilisez des chemins contenant des espaces. Même si la variable elle-même ne contient pas de guillemets, après son analyse par le système, des espaces peuvent apparaître dans le chemin (par exemple, %ProgrammeFichiers% dans C:\Programmes). Dans tous les cas, il est préférable d'utiliser des guillemets - c'est une bonne pratique lors de la conception de fichiers de commandes.

Comment définir vos variables

L'exemple ci-dessus utilisait des variables d'environnement déjà existantes. Et vous avez probablement remarqué les symboles de pourcentage entourant les noms de variables. Ces caractères sont nécessaires pour permettre la substitution de valeurs de variables sur la ligne de commande ou dans un fichier batch. Les symboles de pourcentage indiquent que Cmd.exe doit accéder aux valeurs des variables plutôt que de faire une comparaison caractère par caractère. Ci-dessous, vous verrez comment cela fonctionne. Vous pouvez définir vos variables dans un fichier batch avec la commande SET.

Commande SET
Vous pouvez définir vos variables dans le fichier batch en utilisant la même commande SET.

Pour ajouter une variable, saisissez sur la ligne de commande :

Code:

Définir nom_variable=valeur

Pour afficher une variable, saisissez sur la ligne de commande :

Code:

Définir le nom_variable

Pour supprimer une variable, saisissez sur la ligne de commande :

Code:

Définir nom_variable=

Par exemple,

Code:

SET monrép=D:\Files\Work

définit une variable monrépertoire, qui renverra le chemin d'accès au dossier spécifié. Vous pouvez en savoir plus sur l'équipe sur ensemble /?.

Remarque importante : Les variables définies par la commande set ne sont valides que pour la durée de la session de commande (voir ci-dessous) au cours de laquelle elles ont été définies.

Ces variables peuvent être créées, par exemple, pour n'importe quel chemin ; il vous suffit de définir ou de trouver un algorithme pour attribuer une variable dans chaque situation particulière, en utilisant des exemples prêts à l'emploi ou en créant le vôtre à partir de ceux-ci. En règle générale, ces variables sont créées dans la session en cours par des fichiers batch à l'aide de certaines instructions.

Exemple d'affectation de variables dans un fichier RunOnceEx.cmd importer les paramètres dans le registre

CMD/LOT :

@echo off SET KEY=HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx SET i=100 REG ADD %KEY% /V TITLE /D "Installation d'applications" /f REG ADD %KEY%\%i% /VE /D "WinRar 3.51" /f REG ADD %KEY%\%i% /V 1 /D "%systemdrive%\install\Software\WinRar.exe /s" /f REG ADD %KEY%\%i% /V 2 / D "REGEDIT /S %systemdrive%\install\Software\rar_set.reg /s" /f SET /A i+=1

Dans ce script, la commande SET définit deux variables : %je% Et %CLÉ%. Veuillez noter qu'ils sont spécifiés sans symboles de pourcentage, mais pour y accéder, %% est déjà nécessaire. Variable %CLÉ% sert à simplifier et à optimiser le code. Elle reste inchangée tout au long de la session de commande en cours, éliminant ainsi le besoin d'inclure une clé de registre dans le code à chaque fois. Chaque fois qu'il apparaît dans le code %CLÉ%, il sera remplacé par HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx. Mais %je% sert à la numérotation séquentielle des sections de registre. Avec une valeur initiale de 100, la variable est incrémentée de un à l'aide de la commande SET /A i+=1 après chaque bloc de commandes, ce qui donne la séquence 100, 101, 102, etc. Donc la ligne

Code:

REG ADD %KEY%\%i% /V 1 /D "%systemdrive%\install\Software\WinRar.exe /s" /f

en fait ça fonctionnera comme ça

Code:

REG ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx\100 /V 1 /D "C:\install\Software\WinRar.exe /s" /f

Notez que l'extrait de fichier utilise également une variable système %lecteur système%, qui correspond à la lettre du lecteur système.

Un exemple d'attribution de variables dans un fichier de commandes qui installe une application à partir d'un CD :

Code:

Pour %%i in (C D E F G H I J K L M N O P Q R S T U V W X Y Z), faites s'il existe %%i:\WIN51, définissez CDROM=%%i : démarrez/attendez « %CDROM%\INSTALL\DVDTools\NBRom\Nero.exe »

Dans cet exemple, tous les lecteurs répertoriés sont recherchés pour un fichier spécifique (WIN51). S'il est détecté sur l'un des disques, celui-ci se voit attribuer une variable %CD-ROM%, puis le logiciel est installé en utilisant le chemin spécifié par la variable créée.

Modification des variables d'environnement et ajout de vos propres variables

Comme mentionné ci-dessus, l'effet des variables définies avec la commande set est limité à la session de commande en cours. Si vous souhaitez obtenir une variable système ou utilisateur à partir d'une variable temporaire, vous devez l'enregistrer dans le registre. Cela peut également se faire de différentes manières.

utilitaire setenv
L'utilitaire fonctionne depuis la ligne de commande (site web, téléchargement). L'utilitaire est très simple à utiliser (setenv /?).


Paramètres utilisateur | setenv -u valeur de nom_variable
Paramètres système | setenv -m valeur nom_variable
Paramètres Utilisateur par défaut | setenv -d valeur de nom_variable
Paramètres de la session utilisateur actuelle | valeur setenv -v nom_variable

Disons que si vous avez besoin d'obtenir la variable %temp% au stade de l'installation, vous pouvez le faire à partir de cmdlines.txt , par exemple :

Code:

:: Création et définition du dossier Temp... md %systemdrive%\Temp setenv -u Temp %systemdrive%\Temp setenv -u Tmp %systemdrive%\Temp

L'utilitaire est pratique car après avoir défini une variable, elle peut être utilisée immédiatement. Eh bien, presque immédiatement - lors de la prochaine séance d'équipe. Pour l'utiliser dans la session en cours, vous pouvez utiliser l'ancienne commande set familière :

Code:

:: Création de #EgOrus# var set EgOrus=D:\EgOrus setenv -u EgOrus %EgOrus%

Importation des paramètres dans le registre
Si vous apportez des modifications au registre après la première connexion, les variables ne commenceront à « fonctionner » qu'après un redémarrage ou la fin de la session utilisateur. Bien entendu, pendant le processus d'installation automatique, vous pouvez importer les paramètres souhaités dans le T-12 (voir l'article Registry Tweaks) et contourner ce problème. Si vous n'avez pas l'intention d'utiliser la variable attribuée dans la session utilisateur en cours, l'importation dans le registre peut également vous convenir. Je ne décrirai pas à nouveau le processus d'importation de fichiers REG, mais considérerai la commande REG ADD à l'aide d'un exemple spécifique.

Disons que vous souhaitez avoir une variable dans le système %CD-ROM% de manière permanente et installez-le lors de l'installation des applications à partir du CD. En suivant le code ci-dessus, après avoir défini une variable, vous devez l'attribuer à celle du système.

CMD/LOT :

Pour %%i in (C D E F G H I J K L M N O P Q R S T U V W X Y Z), faites s'il existe %%i:\WIN51 set CDROM=%%i: REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v cdrom /d %CDROM% / f

Une fois qu'un fichier WIN51 est trouvé, le lecteur sur lequel il a été trouvé se voit attribuer une variable locale %CD-ROM%, qui est immédiatement affectée comme variable système constante en l'important dans le registre. Cette méthode a été proposée dans l'un des sujets de la conférence Oszone Sanja Alone. En même temps, vous l'avez découvert. où les paramètres des variables système sont stockés dans le registre. Les paramètres des variables utilisateur sont stockés dans HKCU\Environment. Les chemins renvoyés par les variables %PROGRAMFILES% et %COMMONPROGRAMFILES% peuvent être affichés dans les paramètres ProgramFilesDir et CommonFilesDir dans HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion, mais ne doivent pas y être modifiés. Les répertoires d'installation du programme (autres que %SystemDrive%\Program Files) doivent être configurés via un fichier de réponses.

CV
Le shell de commande Windows (cmd.exe) est un outil très puissant pour travailler avec le système. Les fichiers batch peuvent automatiser un grand nombre de tâches, c'est pourquoi ils sont souvent utilisés pour installer automatiquement Windows. L'utilisation habile des variables dans les fichiers batch vous permet de résoudre un large éventail de problèmes. Travailler avec le shell de commande devient plus efficace et en même temps le code des fichiers batch est simplifié. Vous pouvez trouver d’autres exemples d’utilisation de variables sur les pages du site ou du forum. Tous les exemples utilisés dans cet article sont tirés des scripts des participants au forum OsZone.ru, pour lesquels je les remercie beaucoup.

Terminologie
Interpréteur de commande
est un produit logiciel distinct qui assure une communication directe entre l'utilisateur et le système d'exploitation. L'interface utilisateur textuelle de ligne de commande fournit un environnement dans lequel exécuter des applications et des utilitaires textuels.

cmd.exe- un interpréteur de commandes que le shell de commande du système d'exploitation Windows utilise pour traduire la commande saisie dans un format compris par le système.

Séance d'équipe peut être initié soit par le lancement cmd.exe, et en exécutant un fichier batch. En d’autres termes, le shell de commande actuel est créé. Par conséquent, quitter ce shell (par exemple, terminer un fichier batch) met fin à la session de commande.

Session utilisateur(session utilisateur) commence lorsque l'utilisateur se connecte (se connecter) et se termine lorsque l'utilisateur se déconnecte (se déconnecter).

02/12/15 21,1K

Pourquoi y a-t-il un tel chaos dans le monde ? Oui, parce que l'administrateur de notre système a oublié de remplir ses fonctions. Ou je viens de perdre la liste des commandes cmd de notre monde. Bien qu'il s'agisse d'un regard quelque peu original sur l'ordre des choses existant, il reflète néanmoins une partie de la vérité dont nous avons besoin : grâce à la ligne de commande, vous pouvez facilement remettre de l'ordre dans votre ordinateur :

Quelle est la ligne de commande

La ligne de commande est l'outil le plus simple pour gérer le système d'exploitation de votre ordinateur. Le contrôle s'effectue à l'aide d'un certain nombre de commandes réservées et d'un ensemble de caractères de texte au clavier sans utiliser de souris ( dans le système d'exploitation Windows).

Sur les systèmes UNIX, vous pouvez utiliser la souris lorsque vous travaillez avec la ligne de commande.

Certaines commandes nous sont parvenues de MS-DOS. La ligne de commande est également appelée console. Il est utilisé non seulement pour administrer le système d'exploitation, mais également pour gérer les programmes communs. Le plus souvent, les commandes les plus rarement utilisées sont incluses dans cet ensemble de commandes.

L'avantage d'utiliser les commandes de base cmd est qu'elles consomment une quantité minimale de ressources système. Et cela est important dans les situations d’urgence où toutes les puissances de l’ordinateur sont, d’une manière ou d’une autre, mises en jeu.

cmd implémente la possibilité d'exécuter et de créer des fichiers batch entiers, qui représentent un ordre spécifique d'exécution d'un certain nombre de commandes (scripts). Grâce à cela, ils peuvent être utilisés pour automatiser certaines tâches ( gestion des comptes, archivage des données et plus encore).

Le shell de commande Windows permettant de manipuler et de rediriger les commandes vers certains utilitaires et outils du système d'exploitation est l'interpréteur Cmd.exe. Il charge la console et redirige les commandes dans un format compris par le système.

Travailler avec la ligne de commande dans le système d'exploitation Windows

Vous pouvez appeler la console sous Windows de plusieurs manières :


Les deux méthodes impliquent d'exécuter la console en tant qu'utilisateur actuel. C'est-à-dire avec tous les droits et restrictions imposés sur son rôle dans le système d'exploitation. Pour exécuter cmd avec les droits d'administrateur, vous devez sélectionner l'icône du programme dans le menu Démarrer et sélectionner l'élément approprié dans le menu contextuel :


Après avoir lancé l'utilitaire, vous pouvez obtenir des informations d'aide sur les commandes et leur format d'écriture dans la console. Pour ce faire, saisissez la déclaration d'aide et appuyez sur « Entrée » :

Commandes de base pour travailler avec des fichiers et des répertoires

Les commandes les plus fréquemment utilisées sont :

  • RENAME – renommer les répertoires et les fichiers. Syntaxe de commande :

RENOMMER | REN [lecteur/chemin] nom du fichier/répertoire d'origine | nom de fichier final
Exemple: RENOMMER C:UsershomeDesktoptost.txt test.txt

  • DEL (ERASE) – utilisé pour supprimer uniquement des fichiers, pas des répertoires. Sa syntaxe est :

DEL | EFFACER [méthode de traitement] [nom de fichier]
Exemple: Suppr C:UsershomeDesktoptest.txt/P

Par méthode de traitement, nous entendons un indicateur spécial qui vous permet de mettre en œuvre une certaine condition lors de la suppression d'un fichier. Dans notre exemple, le drapeau « P » permet l'affichage d'une boîte de dialogue d'autorisation pour supprimer chaque fichier :


Plus d'informations sur les valeurs possibles du paramètre « méthode de traitement » peuvent être trouvées dans la documentation technique du système d'exploitation Windows.

  • MD – vous permet de créer un dossier au chemin spécifié. Syntaxe:

MD [lecteur :] [chemin]
Exemple:
MD C : Accueil des utilisateursDesktoptest1test2

L'exemple créera un sous-dossier test2 dans le dossier test1. Si l'un des dossiers racine du chemin n'existe pas, il sera également créé :

  • DR ( RMDIR) – suppression d'un dossier spécifique ou de tous les répertoires sur un chemin spécifié. Syntaxe:

DR | RMDIR [process_key] [lecteur/chemin]
Exemple:
rmdir /s C:UsershomeDesktoptest1test2

L'exemple utilise l'indicateur s, qui entraînera la suppression de la branche entière des répertoires spécifiés dans le chemin. Par conséquent, vous ne devez pas utiliser inutilement la commande rmdir avec cette clé de traitement.

Dans la section suivante, nous examinerons de plus près les commandes network cmd.

Commandes pour travailler avec le réseau

La ligne de commande vous permet de gérer non seulement le système de fichiers du PC, mais également ses capacités réseau. Les commandes réseau de la console incluent un grand nombre d'opérateurs pour surveiller et tester le réseau. Les plus pertinents d'entre eux sont :

  • ping – la commande est utilisée pour surveiller les capacités de connexion réseau d’un PC. Un nombre défini de paquets est envoyé à l'ordinateur distant, puis lui est renvoyé. Le temps de transmission des paquets et le pourcentage de pertes sont pris en compte. Syntaxe:

ping [-t] [-a] [-n compteur] [-l taille] [-f] [-i TTL] [-v type] [-r compteur] [-s compteur] [(-j host_list | - k node_list)] [-w intervalle] [target_PC_name]

Exemple d'implémentation de commande :
ping exemple.microsoft.com
ping –w 10000 192.168.239.132

Dans le dernier exemple de commande cmd ping, la requête est envoyée au destinataire avec l'adresse IP spécifiée. L'intervalle d'attente entre les paquets est de 10 000 (10 secondes). Par défaut ce paramètre est défini sur 4000 :

  • tracert – utilisé pour déterminer le chemin réseau vers une ressource spécifiée en envoyant un message d'écho spécial via le protocole
  • ICMP (Protocole de message de contrôle). Après avoir exécuté la commande avec les paramètres, une liste de tous les routeurs par lesquels passe le message s'affiche. Le premier élément de la liste est le premier routeur du côté de la ressource demandée.

Syntaxe de la commande tracer cmd :
tracert [-d] [-h maximum_hop_number] [-j node_list] [-w intervalle] [target_resource_name]
Exemple de mise en œuvre :
tracert -d -h 10 microsoft.com

L'exemple trace l'itinéraire vers une ressource spécifiée. Cela augmente la vitesse de l'opération grâce à l'utilisation du paramètre d, qui empêche la commande de tenter d'obtenir l'autorisation de lire les adresses IP. Le nombre de transitions (sauts) est limité à 10 en utilisant la valeur définie du paramètre h. Par défaut, le nombre de sauts est de 30 :


arrêt [(-l|-s|-r|-a)] [-f] [-m [\PC_name]] [-t xx] [-c "messages"] [-d[u][p] : xx : aa]
Exemple:
arrêt /s /t 60 /f /l /m \191.162.1.53

Le PC distant (m) avec l'adresse IP spécifiée (191.162.1.53) s'éteindra (s) après 60 secondes (t). Cela vous obligera à vous déconnecter de toutes les applications (f) et de la session de l'utilisateur actuel (l).

Dans les fichiers batch, vous pouvez travailler avec ce que l'on appelle des variables d'environnement (ou variables d'environnement), dont chacune est stockée dans la RAM, a son propre nom unique et sa valeur est une chaîne. Les variables d'environnement standard sont automatiquement initialisées au démarrage du système d'exploitation. De telles variables sont, par exemple, WINDIR, qui détermine l'emplacement du répertoire Windows, TEMP, qui détermine le chemin d'accès au répertoire de stockage des fichiers Windows temporaires, ou PATH, qui stocke le chemin système (chemin de recherche), c'est-à-dire le liste des répertoires dans lesquels le système doit rechercher des fichiers exécutables ou des fichiers partagés (par exemple, des bibliothèques dynamiques). Vous pouvez également déclarer vos propres variables d'environnement dans des fichiers batch à l'aide de la commande SET.

Obtenir la valeur d'une variable

Pour obtenir la valeur d'une variable d'environnement spécifique, vous devez entourer le nom de cette variable entre % caractères. Par exemple:

@ECHO OFF CLS REM Créer la variable MyVar SET MyVar=Bonjour REM Changer la variable SET MyVar=%MyVar% ! Valeur de la variable ECHO MyVar : %MyVar% REM Suppression de la variable MyVar SET MyVar= Valeur de la variable ECHO WinDir : %WinDir%

Lorsque vous exécutez un tel fichier batch, la ligne sera affichée à l'écran

Valeur de la variable MyVar : Bonjour ! Valeur de la variable WinDir : C:\WINDOWS

Conversion de variables en chaînes

Vous pouvez effectuer certaines manipulations avec les variables d'environnement dans les fichiers batch. Tout d'abord, l'opération de concaténation (collage) peut être réalisée sur ceux-ci. Pour ce faire, il vous suffit d'écrire les valeurs des variables connectées les unes à côté des autres dans la commande SET. Par exemple,

ENSEMBLE A=Un ENSEMBLE B=Deux ENSEMBLE C=%A%%B%

Après avoir exécuté ces commandes dans le fichier, la valeur de la variable C sera la chaîne "Double". Vous ne devez pas utiliser le signe + pour la concaténation, car il sera simplement interprété comme un symbole. Par exemple, après avoir exécuté le fichier avec le contenu suivant

SET A=Un SET B=Deux SET C=A+B Variable ECHO C=%C% SET D=%A%+%B% Variable ECHO D=%D%

Deux lignes s'afficheront à l'écran :

Variable C=A+B Variable D=Un+Deux

Deuxièmement, vous pouvez extraire des sous-chaînes d'une variable d'environnement à l'aide de la construction %nom_variable :~n1,n2%, où le nombre n1 détermine le décalage (le nombre de caractères à sauter) depuis le début (si n1 est positif) ou depuis la fin (si n1 est négatif) de la variable d'environnement correspondante, et le nombre n2 est le nombre de caractères à allouer (si n2 est positif) ou le nombre de derniers caractères de la variable qui ne seront pas inclus dans la sous-chaîne sélectionnée (si n2 est négatif). Si une seule option -n négative est spécifiée, les n derniers caractères seront extraits. Par exemple, si la variable %DATE% stocke la chaîne "21/09/2007" (la représentation symbolique de la date actuelle dans certains paramètres régionaux), alors après avoir exécuté les commandes suivantes

SET jj1=%DATE:~0,2% SET jj2=%DATE:~0,-8% SET mm=%DATE:~-7,2% SET aaaa=%DATE:~-4%

les nouvelles variables auront les valeurs suivantes : %jj1%=21, %jj2%=21, %mm%=09, %aaaa%=2007.

Troisièmement, vous pouvez effectuer la procédure de remplacement de sous-chaîne en utilisant la construction %nom_variable :s1=s2%(cela renverra une chaîne avec chaque occurrence de la sous-chaîne s1 dans la variable d'environnement correspondante remplacée par s2 ). Par exemple, après avoir exécuté les commandes

ENSEMBLE a=123456 ENSEMBLE b=%a:23=99%

la variable b stockera la chaîne "199456" . Si le paramètre s2 n'est pas spécifié, alors la sous-chaîne s1 sera supprimée de la chaîne de sortie, c'est-à-dire après avoir exécuté la commande

ENSEMBLE a=123456 ENSEMBLE b=%a:23=%

la variable b stockera la chaîne "1456" .

Opérations avec des variables comme avec des nombres

Lorsque le traitement amélioré des commandes est activé (le mode par défaut dans Windows XP), il est possible de traiter les valeurs des variables d'environnement comme des nombres et d'effectuer des calculs arithmétiques sur celles-ci. Pour ce faire, utilisez la commande SET avec le commutateur /A. Voici un exemple de fichier batch add.bat qui ajoute deux nombres donnés en paramètres de ligne de commande et affiche la somme résultante à l'écran :

@ECHO OFF REM La variable M stockera la somme SET /A M=%1+%2 ECHO La somme de %1 et %2 est égale à %M% REM Supprimer la variable M SET M=

Modifications des variables locales

Toutes les modifications que vous apportez aux variables d'environnement dans un fichier de commande à l'aide de la commande SET persistent après la fermeture du fichier, mais ne sont effectives que dans la fenêtre de commande actuelle. Il est également possible de localiser les modifications apportées aux variables d'environnement dans un fichier batch, c'est-à-dire de restaurer automatiquement les valeurs de toutes les variables telles qu'elles étaient avant le lancement du fichier. Deux commandes sont utilisées pour cela : SETLOCAL et ENDLOCAL. La commande SETLOCAL spécifie le début de la zone de définition des variables d'environnement locales. En d'autres termes, les modifications d'environnement apportées après l'exécution de SETLOCAL seront locales au fichier de commandes actuel. Chaque commande SETLOCAL doit avoir une commande ENDLOCAL correspondante pour restaurer les valeurs précédentes des variables d'environnement. Les modifications d'environnement apportées après l'exécution de la commande ENDLOCAL ne sont plus locales au fichier de commandes actuel ; leurs valeurs précédentes ne seront pas restaurées à la fin de l'exécution de ce fichier.

Dans cet article :

  • Définir des variables
  • Variables de ligne de commande (paramètres d'appel du fichier bat)
  • Opérateur conditionnel IF
  • Fonctions
  • Utilisation des valeurs de retour (code de sortie de traitement)

Définir des variables

ENSEMBLE<Имяпеременной>=<Значениепеременной>

L'instruction SET est une extension de la capacité du système d'exploitation à manipuler les paramètres. Il spécifie une variable dont la valeur remplace son nom chaque fois que ce nom est utilisé entre des signes de pourcentage. Donc, si elle est donnée (une variable requise par de nombreux jeux utilisant la carte son d'un ordinateur) :

ENSEMBLE BLASTER=A220 I5 D1 P330

puis lorsque vous utilisez la construction suivante dans un fichier batch :

ÉCHO %BLASTER%

"A220 I5 D1 P330" s'affichera à l'écran. Les variables définies à l'aide de l'instruction SET sont appelées variables d'environnement et sont visibles après l'exécution jusqu'au redémarrage du DOS (sauf si elles sont modifiées manuellement en mémoire). Autrement dit, il peut être utilisé à partir d'un fichier de commandes ou d'un programme après avoir été spécifié dans un autre. La plus connue est la variable PATH, qui est un ensemble de chemins permettant de rechercher rapidement des fichiers. Il est défini dans le fichier autoexec.bat.

Variables de ligne de commande
(paramètres d'appel du fichier bat)

%<цифра 0-9>

Comme dans n'importe quel langage, dans le langage du fichier batch, il est possible d'utiliser les variables reçues comme paramètres du fichier bat.

Il peut y avoir au total 10 variables indépendantes existantes simultanément. C'est assez petit pour écrire des programmes complexes, bien que 3-4 suffisent souvent pour un travail ordinaire. La valeur de la variable est égale à la valeur du paramètre correspondant de la ligne de commande. La variable %0 contiendra le nom du fichier .bat et, si vous l'avez spécifié, le chemin d'accès à celui-ci. Autrement dit, si vous avez exécuté le fichier abc.bat avec les paramètres suivants :

abc.bat et bc def

alors la variable %0 contiendra la valeur abc.bat , %1 contiendra la valeur a , %2 contiendra bc et %3 contiendra def . Cette propriété est largement utilisée pour créer des fichiers batch polyvalents lors d’opérations répétitives.

Pour obtenir plus de 10 variables à partir de la ligne de commande, vous pouvez utiliser la commande SHIFT.

La commande SHIFT vous permet d'utiliser plus de 10 paramètres de ligne de commande. Cependant, les paramètres précédents correspondants sont perdus. En d'autres termes, la commande SHIFT décale toutes les valeurs des variables d'un pas vers la gauche. Autrement dit, la variable %0 contiendra la valeur précédemment contenue dans la variable %1 et la variable %1 contiendra la valeur de la variable %2 avant le décalage. Cependant, cette opération est irréversible, c’est-à-dire qu’il est impossible de reculer les variables.

Opérateur conditionnel IF

Heureusement, l'interpréteur de commandes cmd.exe de Windows 2000 moderne et versions ultérieures prend en charge les blocs de commande dans les constructions de branchement, éliminant ainsi le besoin d'IF avec des étiquettes. Les blocs de commande sont placés entre parenthèses. Cela ressemble à ceci (imitant le style d'indentation C/C++) :

si condition (

Rem Commandes de la branche 'then'

Rem...

) autre (

Commandes Rem de la branche « else »

Rem...

Exemple d'utilisation spécifique :

@echo désactivé

définir BUILDMODE=%1

si "%BUILDMODE%" == "" (

Echo FAIL : un argument est requis ^(--debug, --release^)

Sortie /b 1

rem Supprimer tous les traits d'union de l'argument pour simplifier le traitement

définir BUILDMODE=%BUILDMODE:-=%

si "%BUILDMODE%" == "débogage" (

Définir CCFLAGS=/Od /MDd /Z7

) autre (

Définir CCFLAGS=/O2 /MD

À mon avis, c’est tout à fait possible de vivre avec. Mais comme toujours, la vie n’est pas aussi simple qu’il y paraît. Il y a un problème. Les variables utilisées dans les blocs then et else sont développées avant le début de l'exécution des blocs, et non pendant l'exécution. Dans l'exemple ci-dessus, cela ne pose aucun problème, mais dans le cas suivant :

si "%BUILDMODE%" == "débogage" (

Echo INFO : Définition du mode d'environnement de débogage

Définir OPTFLAGS=/Od

Définir CCFLAGS=%OPTFLAGS% /MDd /Z7

) autre (

Echo INFO : Définition du mode de publication de l'environnement

Définir OPTFLAGS=/O2

Définir CCFLAGS=%OPTFLAGS% /MD

Le problème est que dans les deux blocs, la substitution de la variable OPTFLAGS se produira avant qu'elle ne soit modifiée lors de l'exécution de ce bloc. En conséquence, CCFLAGS sera rempli avec la valeur qu'OPTFLAGS avait au moment de l'exécution de ce bloc if.

Ce problème est résolu en utilisant une expansion variable retardée. Variables contenues dans !…!

au lieu de %...% , leur signification ne sera révélée qu'au moment de l'utilisation directe. Ce mode est désactivé par défaut. Vous pouvez l'activer soit en utilisant le commutateur /V:ON lors de l'appel de cmd.exe, soit en utilisant la commande :

dans le texte du fichier bat lui-même. La deuxième méthode me semble plus pratique - ce n'est pas très cool d'exiger que quelqu'un exécute votre script avec un certain paramètre.

Cela dit, le « mauvais » exemple précédent pourrait être corrigé comme ceci :

si "%BUILDMODE%" == "débogage" (

setlocal activéexpansion différée

Définir OPTFLAGS=/Od

Echo INFO : Configuration de l'environnement en mode débogage

) autre (

Définissez CCFLAGS=!OPTFLAGS! /MDd /Z7

Définir OPTFLAGS=/O2

Echo INFO : Configuration de l'environnement du mode release

Définissez CCFLAGS=!OPTFLAGS! /MARYLAND

Maintenant, c'est presque un bloc if-then-else à part entière. Presque, car si dans l'une des commandes echo vous rencontrez une parenthèse fermante, alors vous devez l'échapper avec le caractère ^, sinon l'analyseur sera confus...

Mais en tout cas, c'est bien mieux que le nombre insensé de balises et de transitions.

Fonctions

Est-il possible de créer une fonction dans un fichier bat ? Oui, vous pouvez. D’ailleurs, c’est parfois même nécessaire. Certes, celles-ci peuvent être appelées fonctions de manière conditionnelle.

Il existe une syntaxe spéciale pour la commande call, qui permet d'accéder à une marque dans le même fichier bat, en mémorisant l'endroit d'où cet appel a été effectué :

appel:arguments d'étiquette

La fonction est renvoyée avec la commande :

exit /b [code retour facultatif]

La clé /b est ici très importante : sans elle, vous quitterez non pas la fonction, mais le script en général.

Pour plus de détails, tapez sur la ligne de commande :

appel/?

sortie /?

@echo désactivé

Fait intéressant, la commande call avec cette syntaxe prend en charge les appels récursifs avec création automatique d'un nouveau cadre pour les arguments variables %0-%9. Parfois, cela peut être utile. Voici un exemple classique de calcul factoriel récursif en langage de commande :

appel :factoriel %1

écho %RESULT%

sortie

rem Fonction pour calculer la valeur factorielle

Connexion rem:

rem %1 Le nombre pour lequel vous souhaitez calculer la factorielle

rem Sortie :

rem %RESULT% Valeur factorielle

:factoriel

si %1 == 0 (

Définir RÉSULTAT=1

Quitter /b

si %1 == 0 (

Définir RÉSULTAT=1

si %1 == 1 (

définir /a PARAM=%1 - 1

appel : factoriel %PARAM%

définir /a RÉSULTAT=%1 * %RESULT%

quitter /b

> factoriel.bat 10

3628800

Utilisation des valeurs de retour
(code de sortie du programme de traitement)

Lorsqu'un programme termine son travail, il renvoie son code de terminaison au système d'exploitation. Il est d'usage de renvoyer zéro en cas de réussite, sinon un code d'erreur. Parfois, ou plutôt souvent, un programme renvoie « délibérément » une valeur non nulle afin que certains détails de son fonctionnement puissent être « appris » dans le fichier batch. Par exemple, le programme renvoie le code de la touche enfoncée et le fichier .bat effectue diverses actions en fonction de celui-ci.

Comment un fichier batch peut-il connaître le code de sortie du programme exécuté ? La variable clé ERRORLEVEL est prévue à cet effet.

Exemple de fichier batch avec niveaux d'erreur :

@ECHO DÉSACTIVÉ

REM Exécutez le programme prg1.exe

PRG1.EXE

Analyse du code d'achèvement REM

SI ERREUR NIVEAU 2 ALLER AU FILENOTFONT

SI ERREURNIVEAU 1 ALLER À WRITEERROR

SI NIVEAU D'ERREUR 0 ALLER À QUITTEROK

ALLER À UNE SORTIE

:FICHIER INTROUVABLE

Erreur ÉCHO ! Fichier introuvable!

ALLER À UNE SORTIE

:ERREUR D'ÉCRITURE

Erreur d'enregistrement ECHO !

ALLER À UNE SORTIE

:QUITTEROK

ECHO Le programme s'est terminé avec succès.

ALLER À UNE SORTIE

:ONEXIT

Veuillez noter que l'analyse du code de sortie ne part pas de zéro, mais de la valeur maximale possible. Le fait est qu'une telle vérification signifie : « si le niveau d'erreur est supérieur ou égal à la valeur, alors... ». Autrement dit, si nous vérifions à partir de zéro, toute valeur sera vraie sur la première ligne, ce qui est incorrect.

C'est l'erreur la plus courante dans ce type de programmes.



Des questions ?

Signaler une faute de frappe

Texte qui sera envoyé à nos rédacteurs :