(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:
% 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 registreSi 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 commande
AIDERdans 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 commande
SI 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 :
La date obtenue à partir de la variable % DATE% lorsque paramètres standards le paramètre régional ressemble à ceci : 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% Temps à partir de la variable% TEMPS% : Commençons l'archiveur : Vous pouvez maintenant créer un fichier batch avec le contenu : Définir VDATE =% date : ~ 3% 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.
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 |
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é.
- Variables système intégrées
- Variables système de la ruche HKEY_LOCAL_MACHINE
- Variables locales de la ruche HKEY_CURRENT_USER
- Toutes les variables d'environnement et les chemins sont spécifiés dans le fichier Autoexec.bat.
- Toutes les variables d'environnement et les chemins sont spécifiés dans le script de connexion (le cas échéant).
- 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).