Niekedy je užitočné skontrolovať v dávkovom súbore, či bol spustený zo zvýšeného príkazového riadku alebo ako správca. Rád by som sa s vami podelil o trik, ktorý na to používam. Hlavná myšlienka môjho triku je založená na hodnote špeciálnej premennej prostredia% errorlevel%, ktorá ukladá výstupný kód pre väčšinu konzolových aplikácií a príkazov. Pozrime sa na to v akcii.
Inzerát
Keď niektorá konzolová aplikácia dokončí svoju prácu správne, premenná% errrorlevel% uloží 0 ako svoju hodnotu.
Otvorte novú inštanciu príkazového riadku a spustite príkaz 'dir'. Potom vytlačte hodnotu% errorlevel% pomocou príkazu 'echo':
dir echo% errorlevel%
Bude produkovať 0 ako výstup.
Pokúsme sa teraz vykonať príkaz, ktorý vyžaduje zvýšenie, z bežného okna príkazového riadku, ktoré nie je zvýšené. Skúsme napríklad otvorené súbory príkaz, ktorý vyžaduje práva správcu.
Ak vytlačíte hodnotu% errorlevel%, nebude to 0, pretože príkaz openfiles nedokáže zobraziť otvorené súbory bez práv správcu.
Ak ho však spustíte zo zvýšeného príkazového riadku ( tu je návod, ako otvoriť príkazový riadok cmd ), zobrazí vám otvorené súbory a podľa očakávania vráti 0.
Pomocou tejto funkcie je možné implementovať jednoduchú kontrolu v dávkovom súbore:
@echo off openfiles> NUL 2> & 1 if NOT% ERRORLEVEL% EQU 0 goto NotAdmin echo Dobrý deň zo zvýšeného príkazového riadku goto End: NotAdmin echo Tento príkazový riadok NIE JE VYŠŠÍ: Konec
Všimnite si, že na potlačenie výstupov z príkazu openfiles používam presmerovanie výstupu. V časti „> NUL 2> & 1“ je predvolený výstup príkazu presmerovaný nikam (NUL) a chybový výstup je presmerovaný na štandardný výstup, teda tiež na NUL.
Namiesto príkazu openfiles môžete použiť ľubovoľný príkaz, ktorý vyžaduje nadmorskú výšku, napríklad net session príkaz.
To je všetko.