Ponekad je korisno provjeriti u batch datoteci je li pokrenuta iz povišenog naredbenog retka ili kao administrator. Želio bih podijeliti s vama trik koji koristim za to. Glavna ideja mog trika temelji se na vrijednosti posebne varijable okruženja% errorlevel% koja pohranjuje izlazni kôd za većinu aplikacija i naredbi konzole. Pogledajmo ovo na djelu.
Oglas
Kad neka aplikacija konzole pravilno završi svoj posao, varijabla% errrorlevel% pohranjuje 0 kao vrijednost.
Otvorite novu instancu naredbenog retka i pokrenite naredbu 'dir'. Nakon toga ispišite vrijednost% errorlevel% pomoću naredbe 'echo':
dir echo% errorlevel%
Rezultat će biti 0.
Pokušajmo sada izvršiti naredbu koja zahtijeva povišenje iz redovnog prozora naredbenog retka koji nije povišen. Na primjer, probajmo openfiles naredba koja zahtijeva administratorska prava.
Ako ispišete vrijednost% errorlevel%, ona neće biti 0, jer naredba openfiles neće prikazati otvorene datoteke bez administratorskih prava.
Međutim, ako ga pokrenete iz povišenog naredbenog retka ( evo kako otvoriti admin cmd prompt ), prikazat će vam otvorene datoteke i vratiti 0, kako se očekivalo.
Korištenjem ove značajke moguće je implementirati jednostavnu provjeru u batch datoteci:
@echo off openfiles> NUL 2> & 1 if NOT% ERRORLEVEL% EQU 0 goto NotAdmin echo Pozdrav iz povišenog naredbenog retka goto End: NotAdmin echo NIJE PODIZAN: End
Imajte na umu da koristim preusmjeravanje izlaza kako bih suzbio svaki izlaz iz naredbe openfiles. U '> NUL 2> & 1 dijelu', zadani izlaz naredbe preusmjerava se na nigdje (NUL), a izlaz pogreške preusmjerava se na standardni izlaz, tj. Također na NUL.
Umjesto naredbe openfiles možete koristiti bilo koju naredbu koja zahtijeva nadmorsku visinu, na primjer, neto sesija naredba.
To je to.