Il est parfois utile d'archiver un fichier de commandes s'il a été démarré à partir d'une invite de commande élevée ou en tant qu'administrateur. Je voudrais partager avec vous une astuce que j'utilise pour cela. L'idée principale de mon astuce est basée sur la valeur de la variable d'environnement spéciale% errorlevel% qui stocke le code de sortie pour la plupart des applications et commandes de la console. Voyons cela en action.
Publicité
Lorsqu'une application console termine correctement son travail, la variable% errrorlevel% stocke 0 comme valeur.
Ouvrez une nouvelle instance d'invite de commande et exécutez la commande 'dir'. Après cela, imprimez la valeur% errorlevel% à l'aide de la commande 'echo':
dir echo% errorlevel%
Il produira 0 comme sortie.
Maintenant, essayons d'exécuter une commande qui nécessite une élévation, à partir d'une fenêtre d'invite de commande non élevée régulière. Par exemple, essayons le Ouvrir des fichiers commande qui nécessite des droits d'administrateur.
Si vous imprimez la valeur% errorlevel%, elle ne sera pas 0 car la commande openfiles ne parviendra pas à afficher les fichiers ouverts sans droits d'administrateur.
Cependant, si vous l'exécutez à partir d'une invite de commande élevée ( voici comment ouvrir une invite cmd admin ), il affichera les fichiers ouverts et retournera 0, comme prévu.
En utilisant cette fonctionnalité, il est possible d'implémenter une simple vérification dans le fichier batch:
@echo off openfiles> NUL 2> & 1 if NOT% ERRORLEVEL% EQU 0 goto NotAdmin echo Hello from elevated command prompt goto End: NotAdmin echo Cette invite de commande n'est PAS ELEVATED: End
Notez que j'utilise la redirection de sortie pour supprimer toute sortie de la commande openfiles. Dans la partie '> NUL 2> & 1', la sortie par défaut de la commande est redirigée vers nulle part (NUL), et la sortie d'erreur est redirigée vers la sortie standard, c'est-à-dire vers NUL également.
Au lieu de la commande openfiles, vous pouvez utiliser n'importe quelle commande nécessitant une élévation, par exemple, le session réseau commander.
C'est ça.