A veces es útil registrar un archivo por lotes si se inició desde un símbolo del sistema elevado o como administrador. Me gustaría compartir con ustedes un truco que estoy usando para hacer esto. La idea principal de mi truco se basa en el valor de la variable de entorno especial% errorlevel% que almacena el código de salida para la mayoría de las aplicaciones y comandos de la consola. Veamos esto en acción.
Anuncio
Cuando alguna aplicación de consola termina su trabajo correctamente, la variable% errrorlevel% almacena 0 como su valor.
Abra una nueva instancia de símbolo del sistema y ejecute el comando 'dir'. Después de eso, imprima el valor% errorlevel% usando el comando 'echo':
dir echo %errorlevel%
Producirá 0 como salida.
Ahora, intentemos ejecutar un comando que requiera elevación, desde una ventana de símbolo del sistema no elevada. Por ejemplo, probemos el abrir archivos comando que requiere derechos de administrador.
Si imprime el valor% errorlevel%, no será 0 porque el comando openfiles no mostrará los archivos abiertos sin derechos de administrador.
Sin embargo, si lo ejecuta desde un símbolo del sistema elevado ( aquí se explica cómo abrir un indicador de cmd de administrador ), mostrará los archivos abiertos y devolverá 0, como se esperaba.
Con esta función, es posible implementar una simple verificación en el archivo por lotes:
@echo off openfiles> NUL 2> & 1 if NOT% ERRORLEVEL% EQU 0 goto NotAdmin echo Hola desde el símbolo del sistema elevado goto End: NotAdmin echo Este símbolo del sistema NO ESTÁ ELEVADO: End
Tenga en cuenta que utilizo la redirección de salida para suprimir cualquier salida del comando openfiles. En la parte '> NUL 2> & 1', la salida predeterminada del comando se redirige a ninguna parte (NUL), y la salida de error se redirige a la salida estándar, es decir, a NUL también.
En lugar del comando openfiles, puede usar cualquier comando que requiera elevación, por ejemplo, el sesión neta mando.
Eso es.