Si vous travaillez beaucoup dans les fichiers de commandes Windows, l'instruction IF offre un moyen très puissant d'ajouter de la flexibilité à vos scripts.
Dans cet article, vous allez découvrir les cinq principaux types d'instructions IF que vous pouvez utiliser dans un fichier de commandes Windows, à quoi ressemble la syntaxe correcte et un exemple réaliste pour chacun.
Si vous êtes prêt à commencer à écrire des scripts, commençons !
L'une des choses de base que vous devrez généralement faire dans un script batch est de comparer deux valeurs et suivez un plan d'action différent en fonction de la comparaison.
Par exemple, supposons que vous vouliez écrire un script batch qui vérifie quotidiennement la taille du disque dur de votre ordinateur. S'il est inférieur à 3 Go, vous souhaitez recevoir un rapport par e-mail indiquant :"Espace disque dur trop faible".
Pour créer un script qui compare l'espace libre actuel sur le disque dur à votre limite, vous devez créer le script batch suivant et l'enregistrer en tant que fichier .bat.
@echo off
définir DriveLimit=300000000
for /f "usebackq delims==tokens=2" %%x in (`wmic logicaldisk where "DeviceID='C:'" get FreeSpace /format:value`) définissez FreeSpace=%%x
Echo FreeSpace="%FreeSpace%"
Limite d'écho="%DriveLimit%"
Si %FreeSpace% GTR %DriveLimit% (
Echo Il y a suffisamment d'espace libre.
) autre (
Echo Espace libre insuffisant.
)
WMIC est le composant Windows Management Instrumentation de Windows qui est livré avec un assortiment de commandes que vous pouvez utiliser pour extraire des informations PC. C'est ainsi que la commande "wmic" de ce script appelle l'espace "logicaldisk" et le place dans la variable FreeSpace. Maintenant, vous pouvez simplement remplacer la ligne "Echo Pas assez d'espace libre" par une commande de courrier électronique Blat pour vous envoyer une alerte.
Enfin, configurez ce script en tant que travail par lots planifié Windows qui s'exécute quotidiennement.
Si vous n'avez jamais utilisé blat auparavant, nous avons un article qui vous montre comment configurer blat. Vous n'êtes pas familier avec la configuration des tâches planifiées ? Nous vous proposons un article sur la configuration des tâches planifiées de Windows.
Une autre comparaison IF utile que vous pouvez effectuer dans un travail par lots consiste à comparer des chaînes .
Dans l'exemple suivant, vous verrez comment vérifier votre version de Windows à l'aide d'un travail par lots. Ensuite, vous pouvez comparer cela à votre version Windows attendue.
Certaines utilisations de ce script seraient pour les audits informatiques lorsque vous devez exécuter rapidement un script et vous assurer que le système d'exploitation actuel est le plus récent, ou s'il a besoin d'une mise à niveau.
Voici à quoi ressemble ce script.
@echo off
pour /f "tokens=4-5 delims=. " %%i in ('ver') do set VERSION=%%i.%%j
if "%version%" =="6.0" echo Windows Vista.
if "%version%" =="6.1" echo Windows 7
if "%version%" =="6.2" echo Windows 8
if "%version%" =="6.3" echo Windows 8.1
si "%version%" =="10.0" echo Windows 10.
Voici à quoi ressemble la sortie de ce script.
La possibilité de comparer des chaînes par lots ouvre toute une liste de possibilités. Si vous explorez toutes les informations que vous pouvez obtenir à partir d'une commande WMIC, vous verrez combien de statistiques sur votre ordinateur vous pouvez surveiller. Vous pouvez utiliser des tâches par lots planifiées pour alerter sur celles-ci.
Une autre situation utile où une instruction IF dans un fichier de commandes consiste à vérifier l'existence d'un fichier de données .
La plupart du temps, le travail par lots n'est qu'un outil de surveillance qui peut être programmé pour rechercher de nouveaux fichiers de données entrants dans un répertoire spécifique.
Ensuite, le travail par lots peut soit copier ce fichier vers un autre emplacement où il peut être traité, soit lancer un script Windows qui traite le fichier dans une sortie Excel.
(Nous avons écrit dans le passé sur la façon d'utiliser les scripts Windows pour traiter les données dans un fichier Excel ; une bonne lecture de fond.)
L'utilisation d'un fichier de commandes pour vérifier si un fichier existe dans un répertoire est simple et rapide. Voici à quoi ressemble ce script.
@echo off
s'il existe c:\temp\datafile.txt (
%WINDIR%\SysWOW64\cmd.exe
cscript LoadToExcel.vbs
) autre (
le fichier rem n'existe pas
)
La comparaison IF EXISTS est utile pour beaucoup de choses.
Par exemple, si vous avez un système ou une application en cours d'exécution qui crée de nouveaux journaux d'erreurs dans un dossier spécifique en cas de problème, vous pouvez exécuter un travail par lots de temps en temps pour surveiller si de nouveaux journaux d'erreurs sont créés afin de pouvoir envoyer une alerte.
Un aspect des scripts de fichiers batch que trop peu d'informaticiens ou de programmeurs utilisent est la vérification des erreurs .
Il existe de nombreux travaux par lots qui exécutent des tâches informatiques critiques telles que la sauvegarde de fichiers importants ou l'exécution d'opérations de copie de fichiers. Lorsque ces tâches par lots échouent, les systèmes échouent et les gens le remarquent.
Il est beaucoup plus intelligent de recevoir une alerte lorsque votre travail par lots a échoué à une commande avant les gens commencent à remarquer. De cette façon, vous pouvez résoudre le problème de manière proactive.
Vous pouvez le faire en utilisant la variable %errorlevel% que la plupart des applications et commandes renvoient après leur exécution.
Tout ce que vous avez à faire est de suivre votre commande par la commande IF %ERRORLEVEL%. Si l'application ou la commande a renvoyé un zéro, tout va bien. Si ce n'est pas le cas, vous devez vous envoyer un e-mail.
@echo off
xcopie C :
omefolder E:\backupfolder
IF %ERRORLEVEL% NEQ 0
Vous n'êtes pas obligé de suivre la voie du courrier électronique. Vous pouvez toujours écrire un journal des erreurs que vous pouvez vérifier tous les matins, ou lancer une deuxième application ou commande qui tente de faire la copie à l'aide d'une autre commande. Quelle que soit l'action que vous souhaitez entreprendre, IF %ERRORLEVEL% vous permet de le faire.
Si vous préférez utiliser une instruction IF pour rechercher des codes d'erreur spécifiques, Windows propose une liste assez complète de codes d'erreur.
La dernière instruction IF utile n'est pas une commande spécifique, mais plutôt pour vérifier que le script a reçu les paramètres d'entrée appropriés .
Par exemple, supposons que vous ayez écrit un script qui exécute une commande xcopy à partir d'un dossier d'entrée vers un dossier réseau commun utilisé par une équipe. L'utilisateur n'a qu'à suivre le nom de votre script avec les paramètres définissant son chemin de fichier personnel.
Évidemment, vous ne pouvez pas exécuter correctement votre script sans le chemin spécifié, vous pouvez donc mettre une instruction IF au début de votre script pour vous assurer que les deux paramètres ont été saisis.
Voici à quoi cela ressemble.
@echo off
SI [%1]==[] (
GOTO sub_message
) AUTRE (
xcopie %1 E:\dossier de sauvegarde
)
ALLER À eof
:sous_message
echo Vous avez oublié de spécifier votre chemin.
:eof
Si vous n'avez jamais utilisé de paramètres avec des scripts batch auparavant, le symbole de pourcentage suivi d'un nombre représente la variable de paramètre. %1 est le premier paramètre, %2 est le second, et ainsi de suite.
De nombreuses personnes commencent à utiliser des tâches par lots pour des tâches simples qui doivent être exécutées en séquence. Avec les instructions IF, il est possible d'ajouter beaucoup plus d'intelligence à vos scripts.
Bien sûr, si vous voulez vraiment passer à la vitesse supérieure, vous pouvez envisager de jeter un œil à VBA avec notre guide sur la création de votre première application VBA, ou peut-être même apprendre la programmation Python.
Vous pouvez souvent utiliser des langages de programmation plus avancés comme ceux-ci, ou apprendre à utiliser PowerShell, pour accomplir bon nombre des mêmes tâches pour lesquelles vous utilisez actuellement des travaux par lots.