Passer au contenu principal

Scripts Windows - Take Command et les bases du langage CMD

Take Command fournit un langage de commande riche dans son processeur de commandes (TCC.EXE) qui est hautement compatible ascendant avec (et remplace) le processeur de commandes Windows par défaut CMD.EXE. Il convient à la création de programmes batch simples et très sophistiqués. Le langage peut également être utilisé à l'invite de commande pour créer une manipulation en temps réel très puissante de votre ordinateur.

Vue d’ensemble

TCC possède un vaste ensemble de capacités. Ces capacités sont regroupées en trois catégories :

 Commandes internes - Ce sont les principales constructions du langage. Les commandes courantes incluent DIR, COPY, MOVE, etc. TCC vous donne un accès instantané à plus de 265 commandes internes. (CMD.EXE de Microsoft contient environ 40 commandes internes.).

Commandes internes et externes

Lorsque nous parlons de commande interne, nous entendons que la commande est intégrée au Take Command programme. Avec CMD, certaines commandes, comme XCOPY, sont en fait des programmes distincts. En PowerShell, les commandes sont généralement des programmes externes. PowerShell nécessite l'installation d'un .NET Framework distinct sur l'ordinateur pour que les commandes fonctionnent.

 Variable interne - Les variables internes sont des variables spéciales intégrées TCC pour fournir des informations sur votre système. Elles ne sont pas stockées dans l'environnement, mais sont accessibles comme s'il s'agissait de variables d'environnement dans des commandes interactives, des alias et des fichiers batch. Take Command fournit plus de 340 variables internes qui peuvent vous en dire beaucoup sur votre ordinateur et son fonctionnement. Ceux-ci incluent le matériel installé, l’état du matériel, l’état du système d’exploitation et des logiciels, etc.

 Fonctions variables - Les fonctions variables sont très similaires aux variables internes, mais elles prennent un ou plusieurs paramètres (qui peuvent être des variables d'environnement ou même d'autres fonctions variables). Les fonctions variables sont utiles à l'invite de commande ainsi que dans les alias et les fichiers de commandes pour vérifier les ressources système disponibles, manipuler les chaînes et les nombres et travailler avec des fichiers et des noms de fichiers. Il y a plus de 440 ​​fonctions variables intégrées TCC.

Nous n'allons pas parler de toutes les fonctionnalités du TCC Langue dans ce tutoriel. (Le manuel est 1,300 XNUMX pages !) Nous allons supposer que vous connaissez les bases de CMD et vous indiquer quelques éléments qui TCC fait mieux avec moins de travail que CMD.

Commandes internes

Il y a plusieurs aspects de TCCLe jeu de commandes internes de qui valent vraiment la peine d’être examinés :

 Interrupteurs

 Alias

 HTTP(S) et FTP(S)

 Flux de commandes de contrôle

 Commande KEYSTACK

 Commandes de surveillance des événements (déclencheurs) – Nous en avons fait un didacticiel distinct

Chacun d’entre eux est couvert ci-dessous :

1. Interrupteurs

Les commutateurs modifient les commandes en leur donnant des instructions spéciales. TCC possède un surensemble de commutateurs CMD et est presque à 100 %. On dit presque, car malheureusement, CMD n'a pas été cohérent d'une version à l'autre.

Par exemple, dans CMD, la commande COPY dispose de 7 commutateurs (XCOPY en a plus). Le TCC La commande COPY comporte 40 commutateurs. Voici quelques exemples de commutateurs que la commande CMD COPY ne possède pas :

 /N Exécute la commande de copie et vous montre quel serait le résultat, mais n'exécute pas réellement la commande

 /O Copiez le fichier source uniquement si la cible n'existe pas

 /S Copiez l'arborescence des sous-répertoires en commençant par les fichiers du répertoire source ainsi que chaque sous-répertoire

 /H Copiez tous les fichiers correspondants, y compris ceux avec un jeu d'attributs masqués ou système

 /W Supprimer les fichiers du répertoire cible qui n'existent pas dans le répertoire source

Ces commutateurs vous permettent de personnaliser le langage d'une manière que vous ne pouvez pas faire avec CMD. Ils effectuent des opérations très puissantes avec seulement deux ou trois frappes.

2. Alias

Nous vous avons donc fourni tous ces commutateurs puissants, mais peut-être que vous ne voulez pas toujours avoir à les taper.

Peut-être avez-vous des façons communes de faire les choses et souhaitez-vous TCC pour adapter les choses à la façon dont vous voulez les faire.

Nous avons une solution... les pseudonymes. Une grande partie du pouvoir de TCC se réunit sous forme d'alias, qui vous donnent la possibilité de créer vos propres commandes. Un alias est un nom que vous sélectionnez pour une commande ou un groupe de commandes.

Des alias simples remplacent un nouveau nom par une commande existante. Des alias plus complexes peuvent redéfinir les paramètres par défaut des commandes internes ou externes, fonctionner comme des fichiers batch en mémoire très rapides et exécuter des commandes basées sur les résultats d'autres commandes. TCC prend également en charge les alias de répertoire, un moyen abrégé de spécifier les noms de chemin.

Les alias peuvent également créer des versions personnalisées de commandes. Par exemple, la commande DIR peut trier un répertoire de différentes manières. Vous pouvez créer un alias appelé DE qui signifie « trier le répertoire par nom de fichier

alias de=dir /oe /p

extension, et faites une pause après chaque page tout en l'affichant" comme ceci :

Vous n’avez donc pas besoin de vous souvenir de tous ces commutateurs. Vous pouvez configurer des versions de la langue qui répondent à vos besoins. Par exemple, vous pouvez créer des alias qui correspondent aux commandes courantes du shell Linux et fonctionner de la même manière si cela vous convient mieux.

TCC l'alias diffère de CMD (et de son DOSKEY externe) de plusieurs manières clés.

• Vous pouvez utiliser des alias dans les fichiers batch. Les macros DOSKEY ne peuvent pas être utilisées dans vos fichiers batch.

 TCC les alias peuvent inclure une extension de variable, ce qui n'est pas disponible dans DOSKEY. Cet exemple crée une simple calculatrice en ligne de commande.

alias calc=`echo La réponse est : %@eval[%$]

Une fois que vous avez entré l'exemple, vous pouvez taper CALC 4*19, par exemple, et vous verrez la réponse. La fonction variable %@eval[%$] sera évalué par l’analyseur. Le texte « 4*19 » remplacera l'espace réservé « $ » et la fonction variable @eval qui exécute des fonctions mathématiques calculera le résultat.

• Vous pouvez attribuer un alias couramment utilisé à une frappe. Par exemple:

alias @Shift-F5=*rép /2/p

Après avoir entré cet exemple, vous verrez un répertoire à 2 colonnes avec pagination chaque fois que vous appuyez sur Shift-F5 suivi de Enter.

 TCC autorise également les alias d'annuaire. Les alias de répertoire sont un moyen abrégé de spécifier des noms de chemin. Par exemple, si vous définissez un alias :

alias pf:=c:\fichiers de programme

Vous pouvez ensuite référencer les fichiers dans c:\program files\jpsoft en entrant pf:\jpsoft.

3. Flux de commandes de contrôle

L’un des domaines les plus faibles de CMD est le flux de contrôle. Ce sont des constructions comme IF..THEN..ELSE ou DO LOOPS qui vous permettent de développer des programmes batch sophistiqués. Si vous créez des processus par lots dans un centre de données, les limitations de CMD vous empêchent de faire quoi que ce soit de sophistiqué.

TCC fournit un ensemble très riche de constructions qui vous permettent de dupliquer (ou de dépasser !) les capacités des shells Linux typiques.

Les exemples suivants montrent certains des types de boucles DO que vous pouvez créer :

Faire des boucles

Comptez

FAIRE POUR TOUJOURS

DO varname = début À fin [PAR étape]

FAIRE PENDANT la condition

À FAIRE JUSQU'À ce que l'état

FAIRE JUSQU'À DATETIME date heure

FAIRE POUR n [SECONDES | PROCÈS-VERBAL | HEURES]

DO varname IN [plage...] [/I:"text" /S[n] /A:[-|+]hsad] ensemble de fichiers

DO varname IN [/T"délimiteurs"] /L jeu de chaînes

DO nomvar IN /C jeu de chaînes

DO varname dans la commande /P

DO nom de variable IN @déposer

TCC fournit également une construction IF..THEN..ELSE très puissante via la commande IFF.

Si... Alors... Sinon

Condition IFF1 ALORS

jeu de commandes1

[ELSEIFF condition2 ALORS jeu de commandes2 ]

[AUTRE

jeu de commandes3 ]

FINIF

L'alias dans cet exemple IFF vérifie si le paramètre est un sous-répertoire. Si tel est le cas, l'alias supprime les fichiers du sous-répertoire et le supprime (saisissez ceci sur une seule ligne) :

alias prune `iff isdir %1 then & del /s /x /z %1 & else & echo %1 n'est pas un répertoire ! & endiff`

Cet exemple montre comment fonctionne une construction SWITCH. Le fragment de fichier batch ci-dessous affiche un message si l'utilisateur appuie sur A, un autre si l'utilisateur appuie sur B ou C et un troisième si l'utilisateur appuie sur une autre touche :

Constructions de commutateurs

inkey Entrez une frappe : %%key

changer %touche

cas A

echo C'est un A

cas B .ou. C

echo C'est soit B, soit C

défaut

echo Ce n'est ni A, ni B, ni C

4.PILE DE CLÉS

KEYSTACK prend une série de frappes et les transmet à un programme ou une commande comme si elles étaient tapées au clavier. (Il n'a pas d'équivalent dans CMD.) KEYSTACK est le plus souvent utilisé pour les programmes démarrés à partir de fichiers batch. Par exemple, pour démarrer Word et ouvrir le dernier document sur lequel vous avez travaillé, vous pourriez utiliser la commande :

mot de démarrage et pile de clés /w54 alt-f "1"

Cela provoque ce qui suit :

 Démarre Word,

 Le commutateur /w entraîne un délai d'environ trois secondes (54 tics d'horloge à environ 1/18 de seconde chacun) pour que Word démarre,

 Place les frappes pour alt-F (menu déroulant Fichier) et 1 (ouvrir le fichier le plus récemment utilisé) dans le tampon.

Word reçoit ces frappes et effectue les actions appropriées. Notez que les deux commandes, START et KEYSTACK, sont émises sur une seule ligne de commande. Cela garantit que les frappes sont envoyées à la fenêtre de Word et non à Take Command.

5. FTP et HTTP

TCCLes commandes FTP et HTTP de vous permettent de traiter les sites http et ftp comme s'il s'agissait de lecteurs de disque locaux. C'est un énorme avantage par rapport à CMD. Dans Travailler dans le monde Internet, nous vous montrons comment utiliser ces commandes pour créer des applications pratiques de surveillance à distance.

Dans sa forme la plus simple, vous pouvez agir comme si un site FTP ou HTTP était un disque local. Par exemple, pour obtenir un répertoire du site FTP de JP Software, vous pourriez utiliser cette commande :

Répertoire ftp://ftp.jpsoft.com/*

L'exemple suivant montre comment inclure un nom d'utilisateur et un mot de passe FTP :

Répertoire ftp://nom d'utilisateur :cette adresse e-mail qui est protégée du spam. Vous devez activer JavaScript pour la voir./monrépertoire/*

Vous pouvez référencer des sites Internet pour les commandes DIR, COPY, MOVE, DEL et autres. Ces commandes fonctionnent également avec les versions sécurisées de FTP et HTTP.

6. Commandes de surveillance des événements (déclencheurs)

L'une des fonctionnalités les plus puissantes de TCC sont les 8 commandes de surveillance des événements. Ils vous permettent d'observer une grande variété d'activités sur votre ordinateur et de « déclencher » des processus pour traiter ou signaler des problèmes.

Ceci est décrit en détail dans Utiliser des déclencheurs dans Take Command. Cela vaut bien la peine d’être lu.

 

Variables internes

Les variables internes sont des variables spéciales intégrées TCC pour fournir des informations sur votre système. Elles ne sont pas stockées dans l'environnement, mais sont accessibles comme s'il s'agissait de variables d'environnement dans des commandes interactives, des alias et des fichiers batch.

Il y en a plus de 330 (CMD en compte moins de 10). Les principaux types de variables comprennent :

 État du matériel

 État du système d'exploitation et du logiciel

 Dates et heures

 Lecteurs et répertoires

 les codes d'erreur

 Écran, couleur et curseur

 Take Command statuts

 Compatibilité

Voici un exemple simple d'utilisation d'une variable commune appelée _DOW (Day Of Week) :

si "%_DOW" == "Mon", appelez c:\cleanup\weekly.bat

Cet exemple appelle un autre fichier batch si nous sommes aujourd'hui lundi.

Avant de continuer...

Une note rapide :

L'un des grands mystères de la ligne de commande est le signe %. Qu'est ce que ça fait? Lorsque vous voyez un signe % devant une variable ou une fonction, cela signifie que l'analyseur doit évaluer la fonction et remplacer la variable ou la fonction par sa valeur texte. Ainsi, dans le dernier exemple, %_DOW est remplacé par le résultat, qui dans ce cas est MON, TUE ou autre.

Que diriez-vous de quelque chose de plus en temps réel que vous pouvez exécuter en arrière-plan :

FAIRE POUR TOUJOURS

si "%_BATTERYPERCENT" LT 25" MSGBOX La batterie est faible

Endo

Cette commande bouclera pour toujours en vérifiant l'état de la batterie et affichera une boîte de message si la charge de la batterie devient faible. MSGBOX est en fait une commande très puissante dans TCC. Vérifiez-le dans le fichier d'aide.

Voici un exemple qui vérifie s'il y a suffisamment de ressources libres avant d'exécuter une application.

si %_GDIFREE lt 40 alors

echo Pas assez de ressources GDI !

quitter autrement

d:\monrépertoire\monapplication

fin

Jetez un œil à la liste des variables internes par catégorie dans le fichier d'aide.

 

Fonctions variables

Les fonctions variables sont l'une des fonctionnalités les plus puissantes de TCC. Les fonctions variables sont très similaires aux variables internes, mais elles prennent un ou plusieurs paramètres (qui peuvent être des variables d'environnement ou même d'autres fonctions variables).

Les fonctions variables sont utiles à l'invite de commande ainsi que dans les alias et les fichiers de commandes pour vérifier les ressources système disponibles, manipuler les chaînes et les nombres et travailler avec des fichiers et des noms de fichiers.

Il existe plus de 290 ​​fonctions variables regroupées en 12 catégories. Ils vous permettent de collecter et de manipuler les informations système de manière très puissante. (CMD n'a pas de fonctions variables.). N'oubliez pas... qu'ils sont tous intégrés.

 Tampons binaires

 Dates et heures

 Lecteurs et périphériques

 Contenu du fichier

 Noms de fichiers

 Propriétés du fichier

 Boîtes de dialogue de saisie

 Propriétés du réseau

 Nombres et arithmétique

 Chaînes et caractères

 État du système

 utilitaire

En utilisant des fonctions, TCC peut lire et écrire des fichiers texte, ainsi que certains fichiers spécialisés, tels que le registre Windows ou les fichiers .ini. Dans l'exemple ci-dessous, nous allons lire un fichier .csv appelé noms.csv (qui est un fichier texte avec des champs séparés par des virgules). Le fichier se présente comme suit :

Joe,100,cette adresse e-mail qui est protégée du spam. Vous devez activer JavaScript pour la voir.

Jeanne,200,Jane@entreprise.com

Pierre, 400,peter@entreprise.com

Notre exemple lira ce fichier ligne par ligne et sélectionnera l'adresse e-mail dans chaque ligne. Il les fera ensuite écho sur la console.

set nom de fichier=%@expand[names*.csv]

enregistrer dans @%nom de fichier

set email=%@field[",",3,%record] echo %email

en finir

Ce code effectue les opérations suivantes :

 La première ligne de l'exemple crée une variable avec le fichier complet et le chemin d'accès du fichier .csv en utilisant le @développer la fonction.

 La deuxième ligne utilise un cas particulier de la commande DO pour :

 Ouvrez le nom de fichier que nous avons défini dans la première ligne avec un @nom de fichier fonction

 Créer un compteur de lignes qu'il définit sur un

 Configurer une nouvelle variable appelée « enregistrement »

 Lit la première ligne de texte jusqu'au CR et la renvoie à « enregistrer »

 Les @champ La fonction sélectionne le troisième champ de la ligne (qui contient l'adresse e-mail) en utilisant un « », comme délimiteur de champ et le place dans une variable appelée « e-mail ». Le délimiteur peut être tout ce que vous voulez.

 La commande ECHO affiche l'adresse e-mail sur la console

 ENDDO renvoie la boucle à l'instruction do, ce qui incrémente le compteur de ligne jusqu'à la ligne suivante. Si c'est la fin du fichier, cela termine la boucle.

Cet exemple particulier semble assez limité, mais nous en utilisons une variante pour traiter nos commandes, construire des clés d'enregistrement et les envoyer par courrier électronique à nos utilisateurs avec une quantité de code remarquablement petite.