Puede usar mi script Batch_Admin para elevar automáticamente al Administrador para su uso en cualquier tipo de script propio de Batch, o BAT o .CMD. Esta función asegura el trabajo en un entorno estándar, con herramientas estándar y de la misma manera en diferentes sistemas Windows. Utiliza varios comandos estándar e integrados de Windows. No use ningún otro script externo. Se puede usar para llamar a cualquier programa como Administrador, no solo scripts Batch. Es suficiente crear un pequeño script, que luego llama al programa que requiere permiso de administrador. Coloque esto en cualquier carpeta PATH de búsqueda (desde% PATH%).
Para usarlo, simplemente inserte la siguiente línea (exactamente como) en su secuencia de comandos Batch principal, que se ejecutará como Administrador. Esto se hace mejor en la parte superior de nuestro script principal y es mejor que primero, que se llamará a través de la LLAMADA adicional, algunos sub-scripts (vea la explicación detallada a continuación).
net session >nul 2>nul&if errorlevel 1 Batch_Admin "%~0" %*
Esto se puede insertar dentro de cualquier script secundario, llamado por la sintaxis CALL. Para mostrar un mensaje mientras todavía no tiene privilegios de administrador, por ejemplo. durante 5 segundos antes de llamar a Batch_Admin establezca la variable "ShowAdminInfo" en la cantidad de segundos
SET ShowAdminInfo=5
net session >nul 2>nul&if errorlevel 1 Batch_Admin "%~0" %*
Entonces, cómo funciona:
• Llama a UAC.ShellExecute a través de VBScript para recoger los permisos de usuario
• Batch ejecuta el script, o BAT o CMD
• La persona que llama al script puede tener espacios de nombre largos incluidos en la llamada entre comillas
• Devuelva todos los parámetros a la llamada al script maestro pasado desde la línea de comando, como si no hubiera transmisión de la llamada y comience algo desde cero, también con caracteres especiales, como signos de exclamación (!) Y porcentaje (%), y también con paréntesis ()
• Contiene una ubicación de script maestro si la llamada se realizó en el directorio donde este script es el maestro
• Auxiliar muestra un mensaje si establecemos ante nosotros la variable "ShowAdminInfo", por ejemplo. durante 5 segundos, lo que puede evitar el paso inmediato de los derechos del Administrador que proporciona información adicional y la posibilidad de una decisión informada. Ejemplos de configuración que debe establecerse: SET ShowAdminInfo = 5 De manera predeterminada, porque esta variable no está definida, no se muestra.
• El script está llamando también en la ruta de búsqueda del sistema% PATH% y desde un recurso de red, como: \ Computer \ share \ test.bat
• Evita malentendidos al escribir los archivos auxiliares necesarios cuando el script llama a varios Batch_Admin casi al mismo tiempo. Utiliza el número aleatorio del 1 al 100
• Pero, lo mejor es usarlo en el script principal. La transición a los derechos de administrador siempre requiere que ejecute el script completamente de nuevo, en una nueva ventana, en un nuevo entorno, sin recurrir a las variables que se configuraron previamente en nuestro script y los valores de estas variables no pasaron para llamar como Administrador . Solo el script se ejecutará nuevamente.
Debajo de un script completo Batch_Admin. Información extendida sobre esto está en mi sitio.
Copie el siguiente texto en el Bloc de notas y guárdelo en el disco como: Batch_Admin.bat
@echo off
if "%~1"=="" (echo *** Batch_Admin ***&echo.&echo Automatically get admin rights for another Batch. See info inside.&TIMEOUT /T 30>nul&goto:eof)
:: A D M I N I S T R A T O R - Automatically get admin rights for script batch. Paste this on top: net session >nul 2>nul&if errorlevel 1 Batch_Admin "%~0" %*
:: Also keep Batch directory localisation and then set variable: PATH_BAT
:: if earlier variable "ShowAdminInfo" is empty (not defined) then no info, else showing info with number of seconds
::
:: Elaboration: Artur Zgadzaj
setlocal
setlocal DisableDelayedExpansion
SET "Localy="
if exist "%~1" SET "Localy=YES"
if exist "%~1.BAT" SET "Localy=YES"
if exist "%~1.CMD" SET "Localy=YES"
if defined Localy FOR %%I IN ("%~1") DO SET "PATH_BAT=%%~dI%%~pI"
SET P1=%~1
SET Parameters=%*
SET Parameters=%Parameters:!=^^!%
setlocal EnableDelayedExpansion
SET Parameters=!Parameters:%P1%=!
SET Parameters=!Parameters:%%=%%%%!
setlocal DisableDelayedExpansion
SET Parameters=%Parameters:~3%
net session >nul 2>nul&if not errorlevel 1 goto Administrator_OK
if not defined ShowAdminInfo goto skip_message_Administrator
echo.
echo Script: %~1
echo.
echo *****************************************************************
echo *** R U N N I N G A S A D M I N I S T R A T O R ***
echo *****************************************************************
echo.
echo Call up just as the Administrator. You can make a shortcut to the script and set:
echo.
echo shortcut ^> Advanced ^> Running as Administrator
echo.
echo Alternatively run once "As Administrator"
echo or in the Schedule tasks with highest privileges
echo.
echo Cancel Ctrl-C or wait for launch %ShowAdminInfo% seconds ...
TIMEOUT /T %ShowAdminInfo% > nul
:skip_message_Administrator
MD %TEMP% 2> nul
SET /A $Admin$=%RANDOM% * 100 / 32768 + 1
SET "Percent="
del "%TEMP%\$Admin_%$Admin$%_Test.bat" 2>nul
echo %Parameters% > "%TEMP%\$Admin_%$Admin$%_Test.bat"
if not exist "%TEMP%\$Admin_%$Admin$%_Test.bat" SET Percent=^"
del "%TEMP%\$Admin_%$Admin$%_Test.bat" 2>nul
echo @SET "PATH_BAT=%PATH_BAT%" > "%TEMP%\$Admin_%$Admin$%_Batch_Start.bat"
echo @SET "BatchFullName=%BatchFullName%" >> "%TEMP%\$Admin_%$Admin$%_Batch_Start.bat"
if defined Localy (echo @CD /D "%PATH_BAT%" >> "%TEMP%\$Admin_%$Admin$%_Batch_Start.bat")
echo @"%~1" %Parameters% %Percent% >> "%TEMP%\$Admin_%$Admin$%_Batch_Start.bat"
echo SET UAC = CreateObject^("Shell.Application"^) > "%TEMP%\$Admin_%$Admin$%_Batch_getPrivileges.vbs"
echo UAC.ShellExecute "%TEMP%\$Admin_%$Admin$%_Batch_Start.bat", "", "", "runas", 1 >> "%TEMP%\$Admin_%$Admin$%_Batch_getPrivileges.vbs"
"%TEMP%\$Admin_%$Admin$%_Batch_getPrivileges.vbs"
endlocal
exit /B
:Administrator_OK
"%~1" %Parameters%
goto:eof
REM *** A D M I N I S T R A T O R - Automatically get admin rights (The End) ***