HOWTO · Batch

Ejecutar un archivo por lotes como administrador

Aprende a ejecutar un archivo por lotes una vez con privilegios de administrador o a configurar un acceso directo para usarlo repetidamente.

En esta página

Para ejecutar una vez un archivo por lotes con privilegios de administrador, haz clic derecho en el archivo, elige Run as administrator y, a continuación, aprueba el aviso del Control de cuentas de usuario (UAC). Si vas a usarlo manualmente con frecuencia, crea un acceso directo y activa la opción Run as administrator. Usa privilegios de administrador solo si algún comando del archivo los necesita. Antes de aprobar la elevación, revisa los comandos, ya que obtienen un amplio acceso al sistema. La cuenta que apruebe el aviso del UAC debe tener permiso para elevar la tarea.

Ejecutar un archivo por lotes como administrador con un acceso directo

Crea un acceso directo haciendo clic derecho en el archivo por lotes y eligiendo Create shortcut. Haz clic derecho en el acceso directo, abre Properties y selecciona Advanced en la pestaña Shortcut. Marca Run as administrator, confirma los cuadros de diálogo y ejecuta el acceso directo. Windows muestra un aviso del UAC cada vez para que apruebes o canceles la ejecución con privilegios elevados. Si la opción no está disponible o Windows rechaza la solicitud, usa una cuenta con permiso para aprobar la elevación o pide al administrador del dispositivo que configure el acceso.

Un acceso directo puede iniciar el archivo por lotes desde otro directorio actual. En ese caso, los comandos que usen rutas relativas podrían buscar archivos en la carpeta equivocada. Añade cd /d "%~dp0" cerca del inicio del archivo por lotes para establecer como directorio actual la carpeta que contiene el script. %~dp0 se expande a la unidad y la ruta del script por lotes en ejecución, y /d permite que cd cambie tanto de unidad como de directorio. Esta línea cambia el directorio de trabajo, pero no concede privilegios de administrador; de eso se encarga la configuración del acceso directo.

El siguiente ayudante de Python escribe una pequeña plantilla de archivo por lotes en una carpeta temporal y muestra las líneas guardadas, para que puedas revisar el comando de directorio antes de añadirlo a tu propio script.

from pathlib import Path
from tempfile import TemporaryDirectory

with TemporaryDirectory() as folder:
    batch_file = Path(folder) / "sample.bat"
    batch_file.write_text(
        '@echo off\ncd /d "%~dp0"\necho Ready\n',
        encoding="utf-8",
    )
    print(batch_file.read_text(encoding="utf-8"), end="")
@echo off
cd /d "%~dp0"
echo Ready

Este ejemplo de Python crea y muestra el contenido del archivo; no ejecuta un archivo por lotes de Windows ni solicita una elevación. En Windows, guarda las líneas del archivo por lotes mostrado en el script que quieras iniciar. Coloca el comando de directorio antes de los comandos que hagan referencia a archivos situados junto al script. Si el script usa rutas absolutas, su comportamiento no dependerá del directorio actual. Las etiquetas visibles del ejemplo permanecen en inglés porque el bloque se conserva sin cambios.

Ejecutar un archivo por lotes como administrador desde su código

El comando runas inicia un programa con las credenciales de otra cuenta de usuario. No es un método general para solicitar la elevación del UAC de la cuenta actual. Por ejemplo, runas /user:DOMAIN\Administrator "cmd.exe /c C:\Scripts\task.bat" solicita las credenciales de la cuenta indicada. Sustituye la cuenta y las rutas del script por valores válidos en tu equipo. La cuenta debe tener los permisos necesarios, y runas puede solicitar su contraseña. /savecred permite guardar las credenciales para usarlas más adelante, lo que supone un riesgo de seguridad en un equipo compartido o que no sea de confianza. Este comando sirve para iniciar el programa con otra cuenta; si quieres aprobar la elevación de tu cuenta actual, usa el menú contextual o la configuración del acceso directo.

Un archivo por lotes también puede iniciar un ayudante independiente que solicite la elevación a Windows, pero un script que se eleva por sí mismo requiere gestionar cuidadosamente las comillas, los argumentos, el directorio de trabajo y la solicitud del UAC. Este artículo no incluye un ayudante VBS listo para copiar porque esos detalles no están verificados. Para ejecutar el archivo manualmente de forma repetida, un acceso directo es más sencillo. Un script no puede eludir el UAC en silencio: Windows requiere la aprobación del usuario o un contexto con privilegios elevados ya autorizados. Los pasos de inicio y el comportamiento de las cuentas dependen de Windows; no se ejecutaron en el entorno de ejecución proporcionado.

Conclusión

Para una ejecución elevada puntual, elige Run as administrator en el menú contextual del archivo. Si vas a ejecutarlo manualmente con frecuencia, configura un acceso directo y fija las rutas relativas al directorio del script mediante %~dp0. Revisa los comandos del archivo por lotes antes de aprobar el aviso del UAC. Usa runas solo cuando necesites ejecutar un comando con otra cuenta; no sustituye el aviso de elevación del UAC. Si la tarea debe ejecutarse sin que una persona apruebe cada inicio, utiliza un mecanismo de administración de Windows aprobado por el administrador, en lugar de intentar ocultar o eludir el aviso.