Uneori este util să verificați un fișier batch dacă a fost pornit de la un prompt de comandă ridicat sau ca administrator. Aș dori să vă împărtășesc un truc pe care îl folosesc pentru a face acest lucru. Ideea principală a trucului meu se bazează pe valoarea variabilei de mediu speciale% errorlevel% care stochează codul de ieșire pentru majoritatea aplicațiilor și comenzilor consolei. Să vedem acest lucru în acțiune.
Reclama
Când o anumită aplicație de consolă își termină operațiunea corect, variabila% errrorlevel% stochează 0 ca valoare.
Deschideți o nouă instanță de prompt de comandă și executați comanda „dir”. După aceea, tipăriți valoarea% errorlevel% folosind comanda „echo”:
dir echo% errorlevel%
Va produce 0 ca ieșire.
Acum, să încercăm să executăm o comandă care necesită elevare, dintr-o fereastră regulată de prompt de comandă neelevată. De exemplu, să încercăm openfiles comandă care necesită drepturi de administrator.
Dacă tipăriți valoarea% errorlevel%, aceasta nu va fi 0, deoarece comanda openfiles nu va afișa fișierele deschise fără drepturi de administrator.
Cu toate acestea, dacă îl rulați dintr-un prompt de comandă ridicat ( iată cum puteți deschide un prompt cmd de administrator ), vă va arăta fișierele deschise și va returna 0, așa cum era de așteptat.
Folosind această caracteristică, este posibil să implementați o verificare simplă în fișierul batch:
@echo off openfiles> NUL 2> & 1 dacă NU% ERRORLEVEL% EQU 0 merge NotAdmin echo Bună ziua din promptul de comandă ridicat mergeți End: NotAdmin echo Acest prompt de comandă NU ESTE ELEVAT: End
Rețineți că folosesc redirecționarea ieșirilor pentru a suprima orice ieșire din comanda openfiles. În partea '> NUL 2> & 1', ieșirea implicită a comenzii este redirecționată către nicăieri (NUL), iar ieșirea de eroare este redirecționată către ieșirea standard, adică și către NUL.
În loc de comanda openfiles, puteți utiliza orice comandă care necesită elevare, de exemplu, sesiune netă comanda.
Asta e.