Cmd entrée variable. Utilisation de variables d'environnement sur la ligne de commande

(de commande) vous permettent de contourner les chemins absolus vers les répertoires. Par exemple, si nous ne connaissons pas à l'avance la lettre disque système, on peut toujours utiliser la variable % lecteur système%, qui renvoie la lettre du lecteur sur lequel le système d'exploitation est installé. En outre, des 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 décrit en détail les différentes techniques d'utilisation des variables, ainsi que la manière 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 distingue deux types de variables d'environnement : système et local. 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. Cependant, les valeurs renvoyées par les variables locales varient en fonction de l'utilisateur connecté. Par exemple, % profil de l'utilisateur% peut retourner C: \ Documents and Settings \ CurrentUser, où CurrentUser est le nom Compte utilisateur.

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

Variable | Type | Description
% SYSTEMDRIVE% | System | 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% | System | Spécifie le chemin de recherche des fichiers exécutables.
% PROGRAMFILES% | Système | Spécifie le chemin d'accès au répertoire d'installation du programme (Program Files)
% COMMONPROGRAMFILES% | Système | Spécifie le chemin d'accès au répertoire du programme partagé (Program Files \ Common Files).
% TEMP% et% TMP% | Système et utilisateur | Renvoie les dossiers temporaires par défaut utilisés par les applications qui sont disponibles pour les utilisateurs connectés. Certaines applications nécessitent la variable TEMP, d'autres nécessitent la variable TMP.
% USERPROFILE% | Local | Renvoie l'emplacement du profil pour 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 les 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 % AllUsersProfile%, ainsi que tous les fichiers avec l'extension SCR du répertoire Windows \ system32 utilisant la variable % SystemRoot%... Au lieu de DEL / F / Q, comme vous le comprenez, il peut y avoir n'importe quoi : de la commande COPY 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 délibérément utilisé des "guillemets" - ce n'est pas accidentel. Le chemin entier, 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, % Fichiers de programme% dans C:\Program Files). Dans tous les cas, il est préférable d'utiliser des guillemets - c'est un bon style pour les fichiers batch.

Comment définir vos variables

L'exemple décrit ci-dessus utilisait des variables d'environnement préexistantes. Et vous avez probablement remarqué les symboles de pourcentage entourant les noms de variables. Ces symboles sont nécessaires afin de permettre la substitution de valeurs variables dans ligne de commande ou dans un fichier batch. Les symboles de pourcentage indiquent que Cmd.exe doit faire référence 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 à l'aide de la commande SET.

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

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

Code:

Définir variable_name = valeur

Pour afficher la variable, tapez sur la ligne de commande :

Code:

Définir le nom_variable

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

Code:

Définir variable_name =

Par exemple,

Code:

SET mydir = D: \ Files \ Work

définit une variable monrépertoire qui renverra le chemin vers le dossier spécifié. Vous pouvez en savoir plus sur la commande à partir de ensemble /?.

Note 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) dans 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 affecter une variable dans chaque situation particulière, en utilisant des exemples prêts à l'emploi ou en créant les vôtres à partir d'eux. En règle générale, ces variables sont créées dans la session en cours par des fichiers batch à l'aide de certains opérateurs.

Exemple d'affectation de variables dans un fichier ExécuterOnceEx.cmd importation de 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 des 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 %% sont déjà nécessaires pour y accéder. Variable % CLÉ% sert à simplifier et à optimiser votre code. Il reste inchangé tout au long de la session de commande en cours, ce qui élimine le besoin d'inclure une clé de registre dans le code à chaque fois. Chaque fois que le code rencontre % CLÉ%, il sera remplacé par HKLM \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ RunOnceEx. Et ici % je% sert à la numérotation séquentielle des clés 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 une séquence de 100, 101, 102, etc. Alors la ligne

Code:

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

fonctionnera en fait comme ça

Code:

REG AJOUTER 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 la variable système % lecteur système% qui correspond à la lettre du lecteur système.

Exemple d'affectation de variables dans un fichier batch 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) faire s'il existe %% i : \ WIN51 set CDROM = %% i : démarrer / attendre « % CDROM% \ INSTALL \ DVDTools \ NBRom \ Nero.exe »

Cet exemple recherche un fichier spécifique (WIN51) pour tous les lecteurs répertoriés. S'il se trouve sur l'un des disques, le dernier se voit affecter la 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 par 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 diverses manières.

Utilitaire Setenv
L'utilitaire fonctionne à partir de la ligne de commande (site Web, téléchargement). L'utilitaire est très simple d'utilisation (setenv /?).


Préférences utilisateur | setenv -u var_name valeur
Préférences système | setenv -m var_name valeur
Paramètres Utilisateur par défaut | setenv -d var_name valeur
Paramètres de session utilisateur actuels | setenv -v var_name valeur

Par exemple, 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 configuration 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 session 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 de paramètres dans le registre
Si vous modifiez le 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 sûr, 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'utilisez pas la variable affecté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 je considérerai la commande REG ADD avec un exemple spécifique.

Disons que vous êtes intéressé à avoir une variable dans le système % CD ROM% de façon continue et installez-le lors de l'installation des applications à partir du CD. En suivant le code ci-dessus, après avoir défini la variable, affectez-la à la variable système.

CMD / LOT :

Pour %% i dans (CDEFGHIJKLMNOPQRSTUVW XYZ) 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 le fichier WIN51 trouvé, la variable locale est affectée au disque sur lequel elle a été trouvée % CD ROM%, qui est immédiatement affectée en tant que variable système constante en l'important dans le registre. Cette méthode a été proposée dans l'un des thèmes de la conférence Oszone Sanja Alone. En même temps, tu l'as 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 vous ne devez pas les modifier ici. Les répertoires d'installation du programme (autres que % SystemDrive% \ Program Files) doivent être configurés via un fichier de réponses.

Résumé
Commander shell Windows(cmd.exe) est un outil très puissant pour travailler avec le système. Les fichiers batch peuvent automatiser un bon nombre de tâches, c'est pourquoi ils sont souvent utilisés pour Installations 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 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 le site Web ou les pages du forum. Tous les exemples utilisés dans cet article sont tirés des scripts des membres du forum OsZone.ru, pour lesquels un grand merci à eux.

Terminologie
Shell de commande
est un produit logiciel distinct qui fournit une communication directe entre l'utilisateur et système opérateur... Texte interface utilisateur la ligne de commande fournit un environnement dans lequel les applications s'exécutent et utilitaires avec une interface texte.

cmd.exe est un interpréteur de commandes qui shell de commande Le système d'exploitation Windows utilise pour traduire la commande entrée dans un format que le système comprend.

Séance d'équipe peut être lancé en tant que lancement cmd.exe et en lançant fichier de commandes... En d'autres termes, le shell de commande actuel est créé. Par conséquent, la sortie de ce shell (par exemple, la fin d'un fichier batch) met fin à la session de commande.

Session utilisateur(session utilisateur) commence à partir du moment où l'utilisateur se connecte (log on) et se termine lorsque l'utilisateur se déconnecte (log off).


0.00 (1 )

Approche générale.

Les fichiers batch sont fichiers texte avec rallonge chauve souris ou alors cmd dont les chaînes sont des commandes ou des noms de fichiers exécutables. Lorsque vous exécutez un fichier de commandes pour l'exécution, le processeur de commandes du système d'exploitation (souvent appelé interpréteur de commandes) prend le contrôle, qui lit et interprète séquentiellement les lignes du fichier de commandes. Pour Windows9X, il le fait commande.com, pour WinNT/2K/XP- cmd.exe... Les lignes du fichier de commandes peuvent contenir des commandes du processeur de commandes lui-même (FOR, GOTO, IF, etc.) ou les noms de modules exécutables (net.exe, regedit.exe, win.com, etc.). Dans les systèmes d'exploitation WinNT / 2K / XP, vous pouvez obtenir une brève aide sur la composition des commandes en utilisant la ligne de commande :

ou sur une commande spécifique :

AIDE Nom de la commande

Pour afficher le texte d'aide non pas à l'écran, mais dans un fichier, vous pouvez utiliser rediriger la sortie ... Lors de l'utilisation de la ligne de commande, l'entrée standard est le clavier et la sortie est l'affichage, cependant, ces périphériques peuvent être réaffectés à l'aide de caractères de redirection

< - entrée de redirection

> - rediriger la sortie (ou>> - rediriger vers un fichier existant lorsque la sortie est ajoutée à la fin du fichier.)

Pour sortir le flux de données de la commandeAIDERdans le fichier help.txt, la ligne de commande sera la suivante :

AIDE> help.txt

Pour afficher l'aide d'une commande GOTO dans un fichier goto.txt :

AIDE GOTO> goto.txt

Utilisation de variables d'environnement.

DANS fichiers batch vous pouvez et devez souvent utiliser Variables d'environnement - des variables dont les valeurs caractérisent l'environnement dans lequel la commande ou le fichier batch est exécuté. Les valeurs des variables d'environnement sont générées lorsque le système d'exploitation est chargé et que l'utilisateur est enregistré dans le système, et peuvent également être définies à l'aide de la commandeENSEMBLEdont le format est :

SET [variable = [chaîne]]

variable Le nom de la variable d'environnement.

ligne La chaîne de caractères à affecter à la variable spécifiée.

Par exemple la ligne de commande

SET mynane = Vasya

ajoutera la variable myname, qui est définie sur Vasya.

Vous pouvez obtenir la valeur d'une variable dans les programmes et les fichiers batch en utilisant son nom, entouré de signes de pourcentage ( %) ... Par exemple la commande

affichera le mot time et la commande

affichera la valeur de l'heure variable, qui prend la valeur de l'heure courante.

Et la ligne de commande

SET PATH = C: myprog;% path%

ajoutera le répertoire C: myprog au chemin de recherche des programmes exécutables décrits par la valeur de la variable PATH

L'exécution de la commande SET sans paramètres provoque l'affichage des valeurs actuelles des variables à l'écran, sous la forme :

NUMBER_OF_PROCESSORS = 1 - nombre de processeurs

OS = type de système d'exploitation Windows_NT

Chemin = E : WINDOWSsystem32 ; E : WINDOWS ; E : Program FilesFar - chemin de recherche des fichiers exécutables.

PATHEXT = .COM; .EXE; .BAT; .CMD; .VBS; .VBE; .JS; .JSE; .WSF; .WSH - extensions pour les fichiers exécutables.

PROCESSOR_ARCHITECTURE = x86 - architecture du processeur.

PROCESSOR_IDENTIFIER = x86 Family 6 Model 8 Stepping 1, AuthenticAMD - ID du processeur.

PROCESSOR_LEVEL = 6 - niveau du processeur (numéro de modèle).

PROCESSOR_REVISION = 0801 - version du processeur.

ProgramFiles = E: Program Files - chemin d'accès au dossier "Program Files"

PROMPT = $ P $ G - format d'invite de ligne de commande $ P - chemin du répertoire actuel $ G - signe ">".

SystemDrive = E : - la lettre du lecteur système.

SystemRoot = E : WINDOWS - Répertoire du système d'exploitation Windows.

La valeur de certaines variables n'est pas affichée sur la commande SET. Ce sont des variables dont les valeurs changent dynamiquement :

% CD% - Prend la valeur de la ligne du répertoire courant.

% DATE% - Prend la valeur de la date actuelle.

% TIME% - Prend la valeur de l'heure actuelle.

% RANDOM% - Accepte une valeur décimale aléatoire dans la plage 1 -32767.

% ERRORLEVEL% - Prend la valeur actuelle du code d'achèvement de la tâche ERRORLEVEL

% CMDEXTVERSION% - Prend la version du shell de commande CMD.EXE pour le traitement étendu des commandes.

% CMDCMDLINE% - Prend la valeur de la ligne qui a appelé le processeur de commandes.

Pour afficher la valeur d'une variable, vous pouvez utiliser la ligne de commande :

ÉCHO% variable%

Paramètres d'entrée pour le fichier batch.

Il est possible de transmettre des paramètres de ligne de commande à un fichier batch et d'utiliser leurs valeurs dans les instructions du fichier batch lui-même.

fichier BAT< параметр1 > , < параметр2 >, ... < параметрN >

Dans le fichier de commandes lui-même, le premier paramètre sera disponible sous forme de variable %1 , seconde - %2 etc. Le nom du fichier batch lui-même est disponible en tant que variable %0 ... Par exemple, créons un fichier de commandes dont la tâche sera d'afficher les valeurs des paramètres saisis à l'écran. Typiquement, la commande est utilisée pour afficher du texte

ÉCHO< текст >

Cependant, si le texte est remplacé par % 1, alors le premier paramètre sera affiché, par % 2 - le second, etc.

Créez un fichier parm.bat avec le contenu suivant :

echo Premier paramètre =% 1

echo Second paramètre =% 2

echo Troisième paramètre =% 3

et lancez-le avec la commande suivante :

parm.bat PREMIER deuxième "deux mots"

après l'avoir terminé, vous comprendrez comment cela fonctionne et que les paramètres avec des espaces doivent être entourés de guillemets doubles. Pour éviter que les lignes traitées par le processeur de commandes ne s'affichent à l'écran, vous pouvez utiliser la commandeÉCHO OFFen le plaçant sur la première ligne du fichier batch. Pour qu'une ligne d'un fichier de commandes soit ignorée par le shell, placez-la au début de celle-ciREM< пробел > ... De cette façon, vous pouvez placer des commentaires, souvent utiles dans les gros fichiers batch :

rem ECHO OFF désactive le mode d'affichage du contenu des lignes du fichier de commandes à l'écran

REM n'affichera que le résultat de leur exécution.

echo Premier paramètre =% 1

echo Second paramètre =% 2

echo Troisième paramètre =% 3

Essayez de remplacer ECHO OFF par @ECHO OFF - le résultat parle de lui-même. La ligne qui désactive le mode de sortie n'est plus affichée à l'écran.

Transitions et étiquettes.

Dans les fichiers batch, vous pouvez utiliser des commandes de saut conditionnelles qui modifient la logique de leur travail en fonction du respect de certaines conditions. Pour illustrer les techniques d'utilisation des sauts conditionnels, créons un fichier batch, dont le but sera d'attribuer une lettre de lecteur prédéfinie à un support amovible, qui servira de lecteur flash. Les conditions sont les suivantes - il y a 2 lecteurs flash, dont l'un doit être visible dans l'explorateur en tant que lecteur X : et le second en tant que lecteur Y : peu importe lequel port USB ils sont connectés. Nous supposerons que de vrais disques peuvent être connectés en tant que F: ou G: Nous reconnaîtrons les disques par la présence d'un fichier avec un nom spécifique (il est préférable de cacher un tel fichier dans le répertoire racine et de l'appeler quelque chose d'inhabituel):

Flashd1.let - sur le premier disque

Flashd2.let - le deuxième

Ceux. la tâche du fichier batch est de vérifier la présence de disques amovibles F: et G: des dossiers Flashd1.let ou alors Flashd2.let et, selon celui qui est présent, attribuez la lettre de lecteur X: ou alors Y :

Pour trouver un fichier sur le disque, utilisez la commandeSI EXISTE:

IF EXIST nom de fichier, commande

La commande la plus simple est d'utiliserSUBSTmapper un nom de lecteur dans un répertoire.

SUBST X : C : - crée disque virtuel X :, dont le contenu sera le répertoire racine du lecteur C:

Créez un fichier batch setXY.bat avec les lignes suivantes :

Après avoir exécuté un tel fichier, vous aurez les disques X: et Y: Mais si vous exécutez à nouveau un tel fichier, la commande SUBST donnera un message d'erreur - après tout, les disques X: et Y: existent déjà.

Il est conseillé de contourner l'exécution de SUBST si les disques virtuels X : et Y : ont déjà été créés (ou de les supprimer à l'aide de SUBST avec l'option -d avant la connexion). Modification du fichier batch à l'aideALLER À- transfert de contrôle à la ligne du fichier batch par étiquette.

étiquette GOTO

L'étiquette doit figurer sur une ligne distincte et commencer par deux points. Apportons des modifications à notre fichier batch afin qu'aucun message d'erreur n'apparaisse :

REM si X n'existe pas : - alors aller au label SETX

S'IL N'EXISTE PAS X : GOTO SETX

REM si X existe : - aller vérifier Y :

SI EXISTE G : flashd1.let SUBST X : G :

SI EXISTE F : flashd1.let SUBST X : F :

REM si Y : existe - quitte le fichier batch.

SI EXISTE Y : ALLER À QUITTER

SI EXISTE G : flashd2.let SUBST Y : G :

SI EXISTE F : flashd2.let SUBST Y : F :

REM sortie du fichier batch

Le message d'erreur SUBST a disparu. Les signes d'erreurs lors de l'exécution de la commande peuvent être suivis dans le fichier de commande lui-même en analysant la variableNIVEAU D'ERREUR, dont la valeur est formée lors de l'exécution de la plupart des programmes. ERRORLEVEL est 0 si le programme s'est terminé sans erreur et 1 si une erreur s'est produite. Il peut également y avoir d'autres valeurs, si elles sont fournies dans le programme exécutable.

Vous pouvez également utiliser un fichier batch en tant que commande dans la ligne d'un fichier batch. De plus, pour effectuer un transfert avec retour au point d'exécution du fichier de commandes appelant, utilisez la commandeAPPEL... Créons un fichier batch test.bat avec le contenu suivant :

Appel ECHO 1.bat

ECHO Retour.

Et le fichier 1.bat contenant la commandePAUSE,qui suspend l'exécution du fichier batch jusqu'à ce qu'une touche soit enfoncée.

Lorsque test.bat est exécuté, un message s'affiche à l'écran

Appel 1.bat

et le contrôle obtiendra 1.bat avec la commande pause. Après avoir lancé une touche du clavier, la ligne de commande "ECHO Return". et l'écran affichera

Si CALL est supprimé dans test.bat, le retour du fichier 1.bat ne sera pas effectué. Soit dit en passant, en utilisant le transfert de contrôle vers un fichier batch, vous pouvez organiser son bouclage. Essayez d'ajouter la ligne suivante à la fin du fichier test.bat :

Vous pouvez quitter la boucle du fichier batch en appuyant sur la combinaison CTRL-Break. Il est possible d'utiliser la commande CALL pour appeler une procédure dans un fichier batch. Dans ce cas, ce n'est pas le nom du fichier externe qui est utilisé comme argument, mais le libellé :
....
appel : proc1
....
: proc1
....
sortir
....

Création de fichier.

Windows n'a pas de commande dédiée pour créer un fichier, mais on peut s'en passer facilement de plusieurs manières :

Copier de la console vers le fichier

COPIER CON monfichier.txt

Lorsque cette commande est exécutée, les données du clavier (périphérique CON) seront écrites dans le fichier monfichier.txt. Appuyez sur F6 ou CTRL-Z pour terminer la sortie.

Redirection de la sortie

ECHO 1> monfichier.txt

L'exécution de cette commande créera un fichier myfile.txt contenant le caractère « 1 »

Combinaison de redirection d'entrée et de sortie :

COPIER CON> monfichier.txt< xyz

Lors de l'exécution de cette commande, comme dans le premier cas, la copie de la console vers un fichier est utilisée, mais au lieu des données du clavier, l'entrée d'un périphérique xyz inexistant est utilisée. Le système affichera un message indiquant qu'un tel périphérique n'existe pas, mais un fichier vide myfile.txt sera créé avec succès.
Une option très simple consiste à copier à partir d'un périphérique factice avec un nom nul au fichier.
copier nul monfichier.txt

Si vous devez souvent créer des fichiers vides, vous pouvez préparer votre fichier batch (par exemple, newfile.bat ou, mieux encore, nf.bat), et lui passer le nom du fichier à créer en paramètre au démarrage.

Contenu du fichier :

Placez ce fichier batch dans votre répertoire système (C: windowssystem32 ou tout ce qui se trouve dans vos chemins de recherche PATH).

Ligne de commande:

nouveaufichier.bat monfichier.txt

Ou alors

nf.bat monfichier.txt

Ou alors
nf monfichier.txt

Tant pis pour la commande nf pour créer fichier videà la ligne de commande.

Attribution de la même lettre de lecteur à un disque amovible.

La tâche consiste à s'assurer que le lecteur USB amovible (lecteur flash) est toujours disponible sous la même lettre, quel que soit l'ordinateur sur lequel il est utilisé et la façon dont il est connecté. Pour le résoudre, nous utiliserons la commande SUBST déjà mentionnée ci-dessus. Sélectionnons la lettre souhaitée pour le disque amovible, par exemple - X. Le nom du disque à partir duquel le fichier batch a été lancé est disponible en tant que variable % ~ d0. Créez un fichier batch avec le contenu suivant :
@Écho off
subst X : % ~ d0
ce qui signifie - créer un disque virtuel X : qui est mappé sur un disque physique à partir duquel le fichier batch a été lancé.
Vous pouvez obtenir plus d'informations sur les valeurs de substitution pour la variable % 0 à partir du fichier de commandes avec le contenu suivant :

@Écho off
FICHIER DE TRAITEMENT D'ÉCHO -% 0
ECHO Date / heure de création / modification du fichier batch -% ~ t0
Chemin du fichier ECHO Batch - "% ~ f0"
Disque de fichiers batch ECHO -% ~ d0
Répertoire de fichiers ECHO Batch - "% ~ p0"
Nom du fichier de commande ECHO -% ~ n0
Extension de fichier de lot ECHO -% ~ x0
ECHO Nom court et extension -% ~ s0
Attributs du fichier batch ECHO -% ~ a0
Taille du fichier de lot ECHO -% ~ z0

Création de générations d'archives par date et heure.

Résolvons le problème suivant - vous devez créer une archive de fichiers situés dans le répertoire C: Program FilesFAR. Le nom du fichier archive doit être composé de l'heure courante (heures.minutes.secondes - HH.MM.SS.rar), et il doit être placé dans un nouveau répertoire, dont le nom doit être composé de la date courante (jour .mois.année - JJ.MM. AAAA). Pour l'archivage, nous utiliserons l'archiveur RAR. Format de démarrage pour créer une archive :

RAR a -r< путь и имя архива > < Путь и имя архивируемых данных >

une- la commande pour créer une archive.
-r- une clé qui détermine l'archivage des sous-répertoires (puisqu'il y a des sous-répertoires dans le dossier source).

Ainsi, pour résoudre le problème, vous devez créer correctement des noms et des chemins pour RAR. Pour lequel nous utiliserons les facteurs suivants :

  • Dans les fichiers batch, vous pouvez accéder à la date et à l'heure actuelles - variables% DATE% et% TIME%
  • Des variables temporaires peuvent être créées dans des fichiers batch à l'aide de la commande SET.
  • La valeur des variables temporaires peut être générée sur la base de% DATE% et% TIME% en sautant et/ou en remplaçant leurs parties à l'aide de la même commande SET.

    La date obtenue à partir de la variable % DATE% lorsque paramètres standards le paramètre régional ressemble à ceci :
    Lun 21.01.2005- Jour de la semaine (2 caractères) -Espace-date (10 caractères)
    Par exemple, créons un répertoire avec la commande MD< имя каталога >.
    Créez une variable temporaire VDATE en mémoire et affectez-lui la valeur de la variable d'environnement DATE, sans les 3 premiers caractères - 20/01/2005 :

    Définir VDATE =% date : ~ 3%

    Créez un répertoire sur le lecteur C:, dont le nom = date actuelle de la variable VDATE :

    MD C : \% VDATE%
    Après avoir exécuté cette commande, un répertoire portant le nom 20/01/2005 sera créé sur le lecteur C:.

    Temps à partir de la variable% TEMPS% :
    14:30:59.93 - Heures, minutes, secondes, centièmes de seconde.
    Les centièmes sont peut-être superflus dans le nom du fichier d'archive. Créez une variable temporaire VTIME et attribuez-lui l'heure actuelle sans les 3 derniers caractères
    définir VTIME =% temps : ~ 0, -3%
    Maintenant VTIME = 14:30:59, mais le signe ":" ne peut pas être utilisé dans le nom du fichier, nous le remplacerons donc par un point.
    définir VTIME =% VTIME :: =.%
    La variable VTIME prendra la valeur 14.30.59 Pour un nom de fichier, d'accord.

    Commençons l'archiveur :

    Vous pouvez maintenant créer un fichier batch avec le contenu :

    Définir VDATE =% date : ~ 3%
    mdc : \% VDATE%
    définir VTIME =% temps : ~ 0, -3%
    définir VTIME =% VTIME :: =.%
    rar a -r C: \% VDATE% \% VTIME% .rar "C: Program filesfar *. *"

    Un tel fichier batch peut être exécuté via un chargement automatique, ou dans le cadre d'un script, lorsque l'utilisateur se connecte au domaine, ou en utilisant le planificateur dans régler le temps et vous disposez toujours d'archives de données critiques classées dans le temps.

    Créez des archives à l'aide de variables de profil utilisateur.

    Ce fichier batch crée des archives du contenu du dossier "Mes documents" des utilisateurs de Win2K / XP, en les plaçant dans des répertoires
    C : ARHIV Mes documents Nom d'utilisateur Date Heure

    Les variables USERPROFILE, USERNAME, WINDIR sont utilisées, donc ce fichier batch ne fonctionnera pas sous WIN9X. (Bien que, si vous le souhaitez, vous pouvez insérer des commandes dans autoexec.bat pour définir les valeurs de ces variables et l'utiliser dans une version mono-utilisateur avec peu ou pas de changement). Le contenu du fichier batch est annoté et ne devrait pas être trop difficile une fois que vous avez compris l'exemple précédent :

    @Écho off
    rem La variable FROM est définie - où obtenir les données pour l'archivage
    set FROM =% USERPROFILE% Mes documents
    rem La variable TO est définie - où placer les archives
    définir TO = C: arhivMes documents \% USERNAME%
    rem Créer un répertoire TO
    md "% À%"
    rem Forme le nom du sous-répertoire à partir de la date actuelle
    rem date actuelle aux paramètres par défaut pour Win2K - lun 25.04.2005
    rem date actuelle aux paramètres par défaut pour WinXP - 25/04/2005
    rem A partir de la date actuelle, formez le nom du sous-répertoire - 25.04
    rem Par défaut Windir pour WinXP est C: WINDOWS, et pour Win2K c'est C: WINNT
    SI / I% Windir% == C: WINNT GOTO Win2K
    définir vdate =% DATE : ~ 0, -5%
    GOTO SetFileName
    : Win2K
    définir vdate =% DATE : ~ 3, -5%
    rem Formons le nom du fichier d'archive à partir de l'heure actuelle - 12: 00: 00.99
    rem, supprimez les centièmes de seconde et remplacez le caractère : par un caractère. Résultat - 12.00,00
    : SetFileName
    définir vtime =% TIME: ~ 0, -3%
    définir vtime =% vtime :: =.%
    rem Créer un sous-répertoire pour le fichier d'archive
    md "% TO% \% VDATE%"
    rem Commande d'archivage. Le commutateur -r est nécessaire pour l'archivage avec des sous-dossiers
    option rem pour l'archiveur ARJ : arj a -r "% TO% \% VDATE% \% VTIME% .arj" "% FROM% *. *"
    rem Lors de l'utilisation archiveur RAR:
    rar a -r "% TO% \% VDATE% \% VTIME% .rar" "% FROM% *. *"

    Exécution de commandes selon un planning.

    Il existe un utilitaire de ligne de commande dans WIN2K / XPÀ,permettant d'exécuter une commande ou un fichier batch à l'heure spécifiée sur local ou ordinateur distant... Pour utiliser la commande AT, le service Planificateur de tâches doit être en cours d'exécution (généralement démarré par défaut lors de l'installation du système).

    AT [\ nom_ordinateur] [[code] | / EFFACER]

    À [\ nom_ordinateur] heure

    [/ CHAQUE : jour [, ...] | / NEXT : jour [, ...]] "commande"

    \ Nom de l'ordinateur Le nom de l'ordinateur distant. Si ce paramètre est omis,

    l'ordinateur local est utilisé.

    code Le numéro de séquence de la tâche planifiée. Indiqué si vous souhaitez annuler une tâche déjà planifiée à l'aide d'une clé / effacer.

    / effacer Annulation d'une tâche planifiée. Si le code de tâche est omis,

    toutes les tâches planifiées pour le spécifié

    ordinateur.

    / Oui Annulation d'une demande de confirmation lors de l'annulation de tous

    tâches planifiées.

    temps L'heure à laquelle la commande a été exécutée.

    / interactif Permettre l'interaction de la tâche avec l'utilisateur,

    travailler sur l'ordinateur pendant le lancement de la tâche. Les tâches lancées sans cette clé sont invisibles pour l'utilisateur de l'ordinateur.

    / tous les jours [, ...] La tâche est lancée les jours spécifiés de la semaine ou

    mois. Si la date est omise, le jour actuel est utilisé

    / le prochain jour [, ...] La tâche sera lancée le prochain jour spécifié de la semaine

    (par exemple jeudi prochain). Si la date est omise,

    le jour du mois en cours est utilisé.

    "équipe" Nom de la commande ou du fichier batch.

    Exemples d'utilisation :

    Un analogue d'un "réveil" - des fenêtres contextuelles avec du texte rappelant à l'utilisateur actuel ou spécifié d'effectuer une action. Pour envoyer un message à l'utilisateur, utilisez l'utilitaireNET.EXE

    À 13:50 net.exe envoyer * Il est temps de boire du café

    À 17:50 net.exe envoie à l'utilisateur l'heure de rentrer à la maison

    AT \ SERVER 13:45 net.exe send Le serveur doit être redémarré

    Affichage de la liste des tâches planifiées :

    Suppression de tâches déjà planifiées :

    EN 3 / SUPPRIMER- suppression de la tâche numéro 3

    AT / SUPPRIMER / OUI- supprimer toutes les tâches

    "Panneau de configuration" - "Tâches planifiées" vous permettent de visualiser, modifier et supprimer les créations de l'équipe À Tâches.

    Arrêt et démarrage des services système.

    Pour arrêter et démarrer les services Win2K / XP à partir de la ligne de commande, utilisez la commande NET.EXE

    NET.EXE ARRÊTER< имя службы >

    NET.EXE START< имя службы >

    Il est possible d'utiliser à la fois le nom abrégé et le nom complet ("Dnscache" - abrégé, "client DNS" - nom complet du service). Un nom de service contenant des espaces est placé entre guillemets doubles. Exemple de redémarrage du service "DNS Client"

    net stop "client DNS"

    net start "client DNS"

    La même chose, en utilisant un nom court :

    arrêt net Dnscache

    net start Dnscache

    Le nom complet du service peut être copié à partir de « Service » -< Имя службы >- "Propriétés" - "Nom affiché"

    Pour gérer les services, il est beaucoup plus pratique d'utiliser l'utilitaire PsService.exe à partir des utilitaires PsTools. L'utilitaire ne nécessite aucune installation et fonctionne sous n'importe quel système d'exploitation Windows. En plus de démarrer et d'arrêter un service, il permet de rechercher un service spécifique sur les ordinateurs réseau local, interrogez l'état et la configuration du service, modifiez le type de démarrage, suspendez le service, continuez, redémarrez.

    Travailler avec services système sous Windows XP, vous pouvez utiliser l'utilitaire sc.exe, qui permet non seulement d'arrêter/démarrer un service, mais également d'interroger son état, ses paramètres de démarrage et de fonctionnement, de modifier la configuration et de fonctionner non seulement avec les services système, mais également avec les pilotes. Si vous en avez les droits, il est possible de gérer les services non seulement en local, mais aussi sur la machine distante. Exemples:
    sc.exe arrête DNSCache- arrêter le service DNSCache sur l'ordinateur local.
    sc \ 192.168.0.1 requête DNSCache- interroger l'état du service DNSCache sur un ordinateur avec une adresse IP de 192.168.0.1
    sc \ COMP démarrer DNSCache démarrer le service DNSCache sur l'ordinateur COMP
    Vous pouvez obtenir un indice sur la façon de travailler avec l'utilitaire en tapant :
    sc /?

    Affichage de la valeur de la variable ERRORLEVEL.

    Ce fichier batch simple affichera la valeur de la variable ERRORLEVEL pour une ligne de commande spécifique. Tout d'abord, une vérification est effectuée pour la présence d'au moins un paramètre d'entrée, et si rien n'est spécifié, un message d'erreur est affiché et la sortie est terminée. Si au moins un paramètre est spécifié, les paramètres d'entrée sont considérés comme une ligne de commande et exécutés, et la valeur ERRORLEVEL est émise à l'aide de la commande ECHO. Contenu du fichier (je l'ai nommé echoEL.bat) :

    @Écho off
    si "% 1" NEQ "" ALLER A PARMOK
    ECHO Vous devez définir la ligne de commande pour déterminer le NIVEAU D'ERREUR
    sortir
    : PARMOK
    %1 %2 %3 %4 %5 %6 %7 %8
    ECHO% 1% 2% 3% 4% 5% 6% 7% 8 ERRORLEVEL =% ERRORLEVEL%

    Exemples de lancement :
    echoEL.bat PART NET
    - la commande NET SHARE sera exécutée (afficher une liste des ressources réseau partagées) et le code ERRORLEVEL sera émis
    echoEL.bat PART NET X "=" C :
    - la commande NET SHARE X: = C: (créer un partage ressource réseau avec le nom X, et le chemin d'accès au répertoire racine du lecteur C :) Notez que le caractère = est entouré de guillemets doubles.
    Les options ci-dessus définissent la ligne de commande correcte. Mais essayez de définir le mauvais paramètre pour NET.EXE ou une commande qui n'existe pas du tout et vous verrez quelle valeur prendra ERRORLEVEL. ET NOTEZ que la ligne de commande s'exécute réellement et, par exemple, l'option "echoEL.bat format A:" formatera la disquette dans le lecteur A :.

    Dialoguer avec l'utilisateur

    Pour dialoguer avec l'utilisateur, vous pouvez utiliser la commande :
    SET / P< имя переменной >=< текст >
    lors de l'exécution, un message texte s'affiche à l'écran< текст >et le texte de la réponse doit être saisi. Exemple - exécutons une demande de mot de passe et affectons sa valeur à la variable "pset":

    Set / p pset = "Entrez le mot de passe -"
    echo Le mot de passe est -% pset%

    Désavantage cette méthode est l'impossibilité de poursuivre l'exécution du fichier de commandes en l'absence de réponse de l'utilisateur, donc très souvent au lieu de set, on utilise programmes tiers... L'un d'eux - CHOIX.COM Télécharger (1,7 ko).
    CHOICE affiche un message texte à l'attention de l'utilisateur et attend que l'une des options de réponse spécifiées (touches du clavier) soit sélectionnée. Sur la base des résultats de la sélection, la variable ERRORLEVEL est formée, dont la valeur est égale au nombre ordinal de la sélection. Par défaut, il y a deux options - Y ou N. Si la réponse est Y - alors ERRORLEVEL = 1, si N - alors ERRORLEVEL = 2. Vous pouvez utiliser plus de 2 options de sélection et il est possible de définir une sélection par défaut lorsque l'utilisateur n'a pas appuyé sur une seule touche pendant un certain temps. Format de ligne de commande :

    choix CHOIX] c, nn]
    / C [:] choix - Spécifie les choix acceptables. Si non défini - OUI
    / N - n'affiche pas les choix.
    / S - minuscule et lettres majuscules différer.
    / T [:] c, nn - La sélection par défaut est "c" après "nn" secondes
    text - La chaîne de texte à afficher en tant que requête

    Créons un fichier batch qui montre l'utilisation de CHOICE. Il répondra en appuyant sur les touches "1", "2", 3 "et" 0. "En appuyant sur" 0 "termine, et en appuyant sur le reste - un message à l'utilisateur. Si rien n'est appuyé pendant 10 secondes - la fin.

    @ÉCHO OFF
    : CHOIX
    CHOIX / C : 1230 / T : 0,10 Votre option
    IF% ERRORLEVEL% EQU 4 ALLER A SORTIE
    echo Votre choix =% ERRORLEVEL%
    ALLER AU CHOIX
    : SORTIR

    Maintenant, en utilisant CHOICE, vous pouvez créer des fichiers batch, dont la logique peut être définie par l'utilisateur.

    Retards dans les fichiers batch

    Il était une fois, de retour sous DOS, la commande pratique SLEEP était utilisée pour organiser l'attente dans un fichier batch, mais pour une raison quelconque, elle a migré du kit d'installation Windows standard vers un kit de ressources supplémentaire. Vous pouvez simplement le copier à partir de là dans le répertoire system32 et l'utiliser dans vos fichiers batch.

    : SLEEP N - où N est le nombre de secondes à retarder.

    Si le kit de ressources n'est pas à portée de main, vous pouvez utiliser la commande CHOISE discutée précédemment sans afficher de texte et avec génération automatique d'une réponse après nn secondes (1-99) :

    Choice.com/T : y, 10/N - délai de 10 secondes

    Suite manière universelle est basé sur le ping de l'interface de bouclage avec le nombre requis de paquets. Le ping pour l'interface de bouclage (le nom d'hôte est localhost ou l'adresse IP 127.0.0.1) est effectué sans réellement transférer de données, c'est-à-dire presque instantanément, et l'intervalle entre les pings est de 1 seconde. En spécifiant le nombre de pings à l'aide du commutateur "-n", vous pouvez obtenir un délai de n secondes :

    Ping 127.0.0.1 -n 30> nul - retardera 30 secondes

    Rechercher des ordinateurs avec une application en cours d'exécution

    Pour implémenter ce script, les utilitaires du package sont utilisés PSTools(brève description). Créons un fichier batch qui recherche sur le réseau local des ordinateurs avec un programme en cours d'exécution dont le nom (la partie initiale du nom) est défini comme paramètre au démarrage, par exemple, game. Si elle est détectée, un message sera envoyé à ADMINCOMP et l'application détectée sera fermée de force. Pour rechercher, nous allons utiliser l'utilitaire Pslist.exe et analyser son code de retour. Une valeur de la variable ERRORLEVEL égale à zéro signifie que l'utilitaire a trouvé un processus sur l'ordinateur distant qui correspond aux critères de recherche. Le nom du processus de recherche sera défini en paramètre lors du démarrage du fichier batch. Donnons un nom à notre fichier batch psl.bat... Commencer par un paramètre ressemblera à ceci :
    jeu psl.bat
    Tout d'abord, vous devez vérifier si le paramètre est spécifié sur la ligne de commande au démarrage, et sinon, nous afficherons un message à l'utilisateur et quitterons. Si le paramètre est paramétré, aller sur l'étiquette "PARMOK" :
    @Écho off
    si "% 1" NEQ "" ALLER A PARMOK
    ECHO Vous devez spécifier le nom du processus à rechercher
    sortir
    : PARMOK
    Vous devez maintenant vous assurer de la formation cohérente des adresses IP des ordinateurs pour la ligne de commande PSlist. Le moyen le plus simple de le faire est d'affecter à une variable d'environnement temporaire (valable uniquement pour la durée de l'exécution du fichier de commandes) la valeur du composant constant de l'adresse (par exemple, 192.168.0.) et la valeur calculée du moins partie significative (par exemple, dans la plage 1-254). Par exemple, nous supposerons que nous devons analyser les ordinateurs dans la plage d'adresses :
    192.168.0.1 - 192.168.0.30:
    définissez IPTMP = 192.168.0. - la partie supérieure de l'adresse
    set / A IPLAST = 1 - partie basse. Clé / A signifie expression numérique calculée
    set IPFULL =% IPTMP %% IPLAST% - valeur d'adresse IP complète.
    La ligne de commande de PSlist ressemblera à ceci :
    pslist \% IPFULL%% 1
    Il ne reste plus qu'à exécuter cycliquement la PSlist, en ajoutant une à chaque cycle à la partie inférieure de l'adresse jusqu'à ce que sa valeur atteigne 30 et en analysant la valeur ERRORLEVEL après exécution. Pour analyser le résultat, nous allons effectuer la transition avec la commande :
    GOTO REZULT% ERRORLEVEL%
    fournissant une transition vers le label REZULT0 lorsqu'un processus est détecté et vers REZULT1
    2013-08-25 14:35:35 : Articles : Sécurité de l'information : Logiciel. Avez-vous apprécié?
  • L'environnement shell Cmd.exe est défini par des variables qui définissent le comportement du shell et du système d'exploitation. Vous pouvez définir le comportement de l'environnement shell ou de l'ensemble de l'environnement du système d'exploitation à l'aide de deux types de variables d'environnement : système et local. Les variables d'environnement système déterminent le comportement de l'environnement global du système d'exploitation. Les variables d'environnement locales contrôlent le comportement de l'environnement dans une instance donnée de Cmd.exe.

    Les variables d'environnement système sont prédéfinies dans le système d'exploitation et sont accessibles à tous Processus Windows XP. Seuls les utilisateurs disposant de privilèges d'administrateur peuvent modifier ces variables. Ces variables sont le plus souvent utilisées dans les scripts d'ouverture de session.

    Les variables d'environnement locales ne sont disponibles que lorsque l'utilisateur pour lequel elles ont été créées est connecté. Variables locales de la ruche HKEY_CURRENT_USER ne conviennent qu'à l'utilisateur actuel, mais définissent le comportement de l'environnement global du système d'exploitation.

    La liste suivante présente Divers types variables par ordre décroissant de priorité.

    1. Variables système intégrées
    2. Variables système de la ruche HKEY_LOCAL_MACHINE
    3. Variables locales de la ruche HKEY_CURRENT_USER
    4. Toutes les variables d'environnement et les chemins sont spécifiés dans le fichier Autoexec.bat.
    5. Toutes les variables d'environnement et les chemins sont spécifiés dans le script de connexion (le cas échéant).
    6. Variables utilisées de manière interactive dans un script ou un fichier batch

    Dans le shell de commande, chaque instance de Cmd.exe hérite de l'environnement de son application parente. Par conséquent, vous pouvez modifier les variables dans le nouvel environnement Cmd.exe sans affecter l'environnement de l'application parent.

    Le tableau suivant fournit une liste des variables d'environnement système et local pour Windows XP.

    Variable

    La description

    % ALLUSERSPROFILE%

    Local

    Renvoie l'emplacement du profil Tous les utilisateurs.

    Local

    Renvoie l'emplacement par défaut des données d'application.

    Local

    Renvoie le chemin d'accès au dossier actuel.

    Local

    Renvoie la chaîne de commande qui a démarré cette instance de Cmd.exe.

    Systémique

    Obtient le numéro de version des extensions de processeur de commandes actuelles.

    Systémique

    Renvoie le nom de l'ordinateur.

    Systémique

    Renvoie le chemin d'accès au shell exécutable.

    Systémique

    Renvoie les données actuelles. Utilise le même format que la commande date / t... Créé par la commande Cmd.exe.

    Systémique

    Renvoie le code d'erreur de la dernière commande utilisée. Une valeur différente de zéro indique généralement une erreur.

    Systémique

    Renvoie le nom de lecteur du poste de travail local associé au répertoire personnel de l'utilisateur. Il est défini en fonction de l'emplacement du répertoire principal. Le répertoire personnel de l'utilisateur est spécifié dans le composant logiciel enfichable " Utilisateurs locaux et groupes".

    Systémique

    Renvoie le chemin d'accès complet au répertoire personnel de l'utilisateur. Il est défini en fonction de l'emplacement du répertoire principal. Le répertoire de base de l'utilisateur est spécifié dans le composant logiciel enfichable Utilisateurs et groupes locaux.

    Systémique

    Renvoie le chemin d'accès réseau au répertoire de base partagé de l'utilisateur. Il est défini en fonction de l'emplacement du répertoire principal. Le répertoire de base de l'utilisateur est spécifié dans le composant logiciel enfichable Utilisateurs et groupes locaux.

    Local

    Renvoie le nom du contrôleur de domaine qui a authentifié la session en cours.

    % NUMBER_OF_PROCESSORS %

    Systémique

    Spécifie le nombre de processeurs installés sur l'ordinateur.

    Systémique

    Renvoie le nom du système d'exploitation. À en utilisant Windows 2000, le nom du système d'exploitation apparaît sous la forme Windows_NT.

    Systémique

    Spécifie le chemin de recherche des fichiers exécutables.

    Systémique

    Renvoie une liste d'extensions de fichiers considérées comme exécutables par le système d'exploitation.

    % PROCESSOR_ARCHITECTURE%

    Systémique

    Renvoie l'architecture du processeur. Valeurs : x86, IA64.

    % PROCESSOR_IDENTFIER%

    Systémique

    Renvoie une description du processeur.

    % PROCESSOR_LEVEL%

    Systémique

    Renvoie le numéro de modèle du processeur installé sur l'ordinateur.

    % PROCESSOR_REVISION%

    Systémique

    Renvoie le numéro de révision du processeur.

    Local

    Renvoie les options de ligne de commande pour l'interpréteur actuel. Créé par la commande Cmd.exe.

    Systémique

    Renvoie un nombre décimal arbitraire compris entre 0 et 32767. Généré par la commande Cmd.exe.

    Systémique

    Renvoie le nom du lecteur contenant le répertoire racine de Windows XP (c'est-à-dire le répertoire système).

    Systémique

    Renvoie l'emplacement du répertoire système de Windows XP.

    Système et utilisateur

    Renvoie les dossiers temporaires par défaut utilisés par les applications accessibles par les utilisateurs connectés. Certaines applications nécessitent la variable TEMP, d'autres nécessitent la variable TMP.

    Systémique

    Renvoie l'heure actuelle. Utilise le même format que la commande temps / t... Créé par la commande Cmd.exe.

    Local

    Renvoie le nom du domaine contenant la liste des comptes utilisateurs.

    Local

    Renvoie le nom de l'utilisateur actuellement connecté.

    Local

    Renvoie l'emplacement du profil de l'utilisateur actuel.

    Systémique

    Renvoie l'emplacement du répertoire du système d'exploitation.

    La déclaration de vos propres variables fait partie intégrante de presque tous les langages de programmation, car dans vbscript, elles sont déclarées à l'aide du mot-clé faible et en jscript il est utilisé mot-clé var.

    Variables de commande Chaînes Windows représentent un caractère légèrement différent, ici vous ne pouvez pas déclarer un groupe de variables cmd, ni affecter immédiatement des valeurs à plusieurs variables sur la ligne de commande. Examinons les lignes de code suivantes :

    écho% Var3% écho% VAR3% écho% vAr3%

    Un point à considérer, l'enregistrement

    définir var1 = 100
    définir var1 = 100

    ils ne sont pas les mêmes, c'est-à-dire que dans le premier cas, nous créons la variable cmd "var1", et dans le second - "var1". La situation est similaire avec l'attribution des valeurs, alors faites attention à l'espace !!!

    On voit que pour afficher la valeur d'une variable en utilisant la fonction Écho, nous l'entourons du caractère "%", pour ensemble- il suffit d'écrire son nom, cela vaut également la peine de considérer que toutes les variables sont affectées d'un type de chaîne.

    Si vous courez pour l'exécution commande cmd set, qui affiche une liste de toutes les variables et de leurs valeurs dans la session en cours, vous verrez que les variables cmd nouvellement créées et. Nous pourrons nous y référer tout au long de la séance.

    Pour effacer les variables de la ligne de commande Windows de leur contenu, il vous suffit d'affecter une valeur vide :

    affichera simplement la ligne% Var3%, et la commande

    DANS cet exemple nous avons échappé les caractères & et ^, attribuant ainsi les phrases :

    "100 & 3 = 5"
    "100 ^3"

    Il convient de noter que si nous essayons d'afficher les valeurs de ces variables à l'aide de la fonction cmd set, il n'y aura aucun problème, mais si nous utilisons la fonction echo, nous obtiendrons un résultat complètement différent de celui attendu. Ainsi, lorsque vous essayez d'exécuter la commande suivante :

    Maintenant, lors de l'exécution du code :

    écho% var4% écho% var5%

    tout ira bien.

    Il est clair que les variables cmd créées dans la fenêtre de ligne de commande actuelle sont inaccessibles aux autres processus, mais il est possible de définir des restrictions encore plus importantes.

    Pour définir la portée locale, le bloc est utilisé SETLOCAL… ENDLOCAL... Toutes les variables de ligne de commande cmd Windows déclarées au milieu de ce bloc ne seront pas visibles en dehors de celui-ci. Ouvrez l'éditeur (j'utilise l'éditeur Bloc-notes ++, car il met immédiatement le code en surbrillance), et écrivez-y les lignes de code suivantes :

    Nous voyons qu'au début nous avons déclaré var1 et lui avons attribué la valeur 0, puis nous avons à nouveau déclaré une variable du même nom, mais déjà dans le bloc SETLOCAL… ENDLOCAL... Le script génère la valeur de var1 locale et globale. J'ai délibérément utilisé des caractères latins pour qu'en cas de quelque chose vous n'affichiez pas de maquereau.

    Les variables d'environnement utilisées dans les fichiers batch (de commande) vous permettent de contourner le besoin de chemins de répertoire absolus. Par exemple, si on ne connaît pas à l'avance la lettre du lecteur système, on peut toujours utiliser la variable % lecteur système%, qui renvoie la lettre du lecteur sur lequel le système d'exploitation est installé. En outre, des 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 décrit en détail les différentes techniques d'utilisation des variables, ainsi que la manière de modifier et de créer de nouvelles variables. Parlons maintenant de tout dans l'ordre.

    Classification des variables d'environnement

    Résumé

    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 bon 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 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 le site Web ou les pages du forum. Tous les exemples utilisés dans cet article sont tirés des scripts des participants, pour lesquels un grand merci à eux.

    Terminologie

    Shell de commande Est un produit logiciel distinct qui fournit une communication directe entre l'utilisateur et le système d'exploitation. L'interface utilisateur textuelle de la CLI fournit un environnement dans lequel les applications et les utilitaires textuels s'exécutent.

    cmd.exe- un interpréteur de commandes que le shell de commande Windows utilise pour traduire la commande saisie dans un format que le système comprend.

    Séance d'équipe peut être lancé en tant que lancement cmd.exe ou en exécutant un fichier batch. En d'autres termes, le shell de commande actuel est créé. Par conséquent, la sortie de ce shell (par exemple, la fin d'un fichier batch) met fin à la session de commande.

    Session utilisateur(session utilisateur) commence à partir du moment où l'utilisateur se connecte (log on) et se termine lorsque l'utilisateur se déconnecte (log off).

    Vous avez aimé l'article ? A partager entre amis :