De vegades és útil comprovar un fitxer per lots si s'ha iniciat des d'un símbol del sistema o com a administrador. M'agradaria compartir amb vosaltres un truc que estic fent servir per fer-ho. La idea principal del meu truc es basa en el valor de la variable d'entorn especial% errorlevel% que emmagatzema el codi de sortida per a la majoria d'aplicacions i ordres de consola. Vegem això en acció.
Anunci publicitari
Quan alguna aplicació de consola acaba el seu treball correctament, la variable% errrorlevel% emmagatzema 0 com a valor.
Obriu una nova instància de símbol del sistema i executeu l'ordre 'dir'. Després d'això, imprimiu el valor% errorlevel% mitjançant l'ordre 'echo':
dir trobo% ERRORLEVEL%
Produirà 0 com a sortida.
Ara, intentem executar una ordre que requereix elevació, des d'una finestra d'indicadors d'ordres no elevada normal. Per exemple, provem el fitxers oberts que requereix drets d'administrador.
Si imprimiu el valor% errorlevel%, no serà 0 perquè l'ordre openfiles no mostrarà els fitxers oberts sense drets d'administrador.
Tanmateix, si l'executeu des d'un símbol del sistema elevat ( Aquí teniu com obrir una sol·licitud de cmd d'administrador ), us mostrarà els fitxers oberts i retornarà 0, tal com era d’esperar.
Mitjançant aquesta funció, és possible implementar una comprovació senzilla al fitxer per lots:
@echo off openfiles> NUL 2> & 1 si NOT% ERRORLEVEL% EQU 0 anar a NotAdmin echo Hola des de l'indicador de comandes elevat anar a Finalitzar: NotAdmin echo
Tingueu en compte que faig servir la redirecció de sortida per suprimir qualsevol sortida de l'ordre openfiles. A la part '> NUL 2> & 1', la sortida per defecte de l'ordre es redirigeix a enlloc (NUL) i la sortida d'error es redirigeix a la sortida estàndard, és a dir, a NUL també.
En lloc de l'ordre openfiles, podeu utilitzar qualsevol ordre que requereixi elevació, per exemple, el fitxer sessió neta comandament.
Això és.