Понякога е полезно да проверите в команден файл дали е стартиран от повишен команден ред или като администратор. Бих искал да споделя с вас трик, който използвам, за да направя това. Основната идея на моя трик се основава на стойността на специалната променлива на средата% errorlevel%, която съхранява изходния код за повечето конзолни приложения и команди. Нека да видим това в действие.
Реклама
Когато някое конзолно приложение завърши работата си правилно, променливата% errrorlevel% съхранява 0 като своя стойност.
Отворете нов екземпляр на командния ред и изпълнете командата 'dir'. След това отпечатайте стойността% errorlevel%, като използвате командата 'echo':
dir echo% errorlevel%
Той ще произведе 0 като изход.
Сега, нека се опитаме да изпълним команда, която изисква кота, от обикновен прозорец на командния ред, който не е повишен. Например, нека опитаме openfiles команда, която изисква права на администратор.
Ако отпечатате стойността% errorlevel%, тя няма да бъде 0, защото командата openfiles няма да покаже отворени файлове без права на администратор.
Ако обаче го стартирате от повишен команден ред ( ето как да отворите администраторски cmd ред ), ще ви покаже отворени файлове и ще върне 0, както се очаква.
Използвайки тази функция, е възможно да се приложи проста проверка в партидния файл:
@echo off openfiles> NUL 2> & 1 if NOT% ERRORLEVEL% EQU 0 goto NotAdmin echo Здравейте от повишен команден ред goto End: NotAdmin echo НЕ Е ИЗДИГАН: Край
Имайте предвид, че използвам пренасочване на изхода, за да потисна всички изходи от командата openfiles. В '> NUL 2> & 1 част' изходът по подразбиране на командата се пренасочва на никъде (NUL) и изходът за грешка се пренасочва към стандартния изход, т.е. към NUL също.
Вместо командата openfiles можете да използвате всяка команда, която изисква надморска височина, например нетна сесия команда.
Това е.