Včasih je koristno preveriti v paketni datoteki, ali se je zagnala iz povišanega ukaznega poziva ali kot skrbnik. Z vami bi rad delil trik, ki ga uporabljam za to. Glavna ideja mojega trika temelji na vrednosti posebne spremenljivke okolja% errorlevel%, ki shrani izhodno kodo za večino aplikacij in ukazov konzole. Poglejmo to v akciji.
Oglas
Ko neka konzola pravilno opravi svoje delo, spremenljivka% errrorlevel% shrani 0 kot svojo vrednost.
Odprite nov primerek ukaznega poziva in zaženite ukaz 'dir'. Po tem z ukazom 'echo' natisnite vrednost% errorlevel%:
dir echo% errorlevel%
Kot rezultat bo ustvaril 0.
Zdaj pa poskusimo izvesti ukaz, ki zahteva višino, iz običajnega okna ukaznega poziva, ki ni povišan. Na primer, poskusimo openfiles ukaz, ki zahteva skrbniške pravice.
Če natisnete vrednost% errorlevel%, ne bo 0, ker ukaz openfiles ne bo prikazal odprtih datotek brez skrbniških pravic.
Če pa ga zaženete iz povišanega ukaznega poziva ( tukaj je postopek, kako odpreti poziv za cmd ), prikazal vam bo odprte datoteke in vrnil 0, kot je bilo pričakovano.
S to funkcijo lahko v paketni datoteki izvedemo preprosto preverjanje:
@echo off openfiles> NUL 2> & 1 if NOT% ERRORLEVEL% EQU 0 goto NotAdmin echo Pozdrav iz povišanega ukaznega poziva goto End: NotAdmin echo Ta ukazni poziv NI IZDELAN: Konec
Upoštevajte, da uporabljam preusmeritev izhodov, da zatiram kakršen koli izhod iz ukaza openfiles. V delu>> NUL 2> & 1 del je privzeti izhod ukaza preusmerjen nikamor (NUL), izhod napake pa preusmerjen na standardni izhod, torej tudi na NUL.
Namesto ukaza openfiles lahko uporabite kateri koli ukaz, ki zahteva višino, na primer neto seja ukaz.
To je to.