Convertir BAT a VBS
Reescriba los comandos batch de Windows como VBScript para WSH, COM, WMI, registry y file automation.
Cómo convertir un archivo bat a vbs
- Programación
- Aún sin calificaciones.
Un sistema de implementación o un host de Windows puede requerir un archivo VBScript en lugar de un script de comandos, especialmente para la automatización de COM, WMI, el registro o Windows Script Host gráfico. Como BAT y VBS utilizan lenguajes y modelos de ejecución diferentes, la conversión requiere reescribir los comandos en lugar de cambiar la extensión del nombre de archivo.
Qué es el formato BAT
Un archivo BAT es un script de texto sin formato interpretado por cmd.exe. Automatiza programas de línea de comandos, operaciones con archivos, variables de entorno, cambios de directorio, bucles, condiciones, etiquetas, redirecciones y comprobaciones de error-level en Windows.
Los administradores y desarrolladores crean archivos BAT con Notepad, Notepad++, Visual Studio Code o editores de línea de comandos. La extensión relacionada .cmd también se utiliza para scripts de Command Prompt. Los archivos BAT y CMD pueden ejecutarse desde File Explorer, Command Prompt, Task Scheduler, scripts de inicio de sesión, sistemas de implementación e instaladores.
Qué es el formato VBS
Un archivo VBS es un programa VBScript de texto sin formato ejecutado por Windows Script Host mediante wscript.exe o cscript.exe. VBScript proporciona variables, procedimientos, instrucciones condicionales, bucles estructurados, automatización de COM, acceso al registro, Windows Management Instrumentation, objetos del sistema de archivos y cuadros de mensaje.
VBS resulta útil cuando un script debe controlar una aplicación habilitada para COM, consultar WMI, acceder al registro o ejecutarse mediante un host de scripts en lugar de directamente bajo cmd.exe. No es inherentemente más rápido ni más pequeño que BAT. Microsoft ha dejado obsoleto VBScript y Windows Script Host puede estar restringido por una directiva o deshabilitado por software de seguridad, por lo que debe comprobar los sistemas de destino antes de realizar la migración.
Cómo convertir un archivo BAT a VBS
No existe un convertidor de formato de un solo clic fiable. La sintaxis de BAT no puede interpretarse como VBScript, y una herramienta automatizada no puede determinar de forma fiable si un comando de shell debe reemplazarse por un objeto de VBScript, conservarse mediante cmd.exe o rediseñarse.
- Abra el archivo BAT en Notepad++, Visual Studio Code u otro editor de texto sin formato. No utilice un procesador de textos.
- Haga un inventario de los comandos, argumentos, rutas entre comillas, variables de entorno, redirecciones, gestión de errores, etiquetas, bucles y programas externos.
- Cree un archivo nuevo, como
backup.vbs; conserve el archivo BAT original para compararlo y poder revertir los cambios. - Reemplace las operaciones por objetos nativos de VBScript cuando sea práctico y, después, utilice
WScript.Shell.RunoExecpara los comandos que no tengan un equivalente adecuado. - Realice las pruebas con
cscript.exe //nologo backup.vbspara que la salida y los errores aparezcan en la consola. Utilicewscript.exe backup.vbscuando no desee una ventana de consola.
Por ejemplo, este código BAT:
mkdir C:\Logs
copy C:\Data\report.csv C:\Logs\report.csv
puede convertirse en:
Set fso = CreateObject("Scripting.FileSystemObject")
If Not fso.FolderExists("C:\Logs") Then
fso.CreateFolder "C:\Logs"
End If
fso.CopyFile "C:\Data\report.csv", "C:\Logs\report.csv", True
El directorio principal del destino debe existir previamente; cree por separado los niveles de directorio que falten cuando sea necesario. Para un comando sin un equivalente práctico en VBScript, conserve explícitamente el comando:
Set shell = CreateObject("WScript.Shell")
exitCode = shell.Run("cmd.exe /c ipconfig /flushdns", 0, True)
If exitCode <> 0 Then WScript.Quit exitCode
Traduzca deliberadamente las construcciones comunes:
echo messagenormalmente se convierte enWScript.Echo "message".pauserequiere un reemplazo comoInputBox,MsgBoxo una espera deliberada.if exist filese convierte enfso.FileExists("file"); las comprobaciones de directorios utilizanfso.FolderExists.- Los bucles
forde Batch se convierten en buclesForoFor Eachde VBScript. %NAME%no es una variable de VBScript. Asigne un valor o recupere el entorno del proceso conshell.ExpandEnvironmentStrings("%NAME%").- Los parámetros posicionales de Batch, como
%1, requierenWScript.Arguments(0); las etiquetas de Batch ygotorequieren rediseñar el flujo de control.
Guarde el resultado como texto sin formato con la extensión .vbs. En Notepad, elija File → Save As, establezca Save as type en All files e introduzca el nombre del archivo entre comillas si es necesario. El texto ANSI o UTF-16 little-endian es ampliamente compatible; la compatibilidad con la codificación UTF-8 depende de la versión de Windows Script Host, por lo que debe probar la codificación elegida en el sistema de destino.
Compatibilidad y pruebas
Cambiar el nombre de script.bat a script.vbs no lo convierte. VBScript rechazará comandos de Batch como echo, set, if exist, la expansión de porcentajes, las etiquetas y la redirección del shell, a menos que se reescriban o se pasen a cmd.exe.
Las comillas de Batch, la expansión retardada, ERRORLEVEL, las canalizaciones, las redirecciones, el comportamiento de los comodines, las reglas del directorio actual y los privilegios administrativos pueden cambiar el resultado. Compruebe cada código de salida, utilice rutas completas siempre que sea posible, ponga entre comillas las rutas que contengan espacios y realice pruebas con copias de los archivos de producción. Un script VBS que invoque cmd.exe /c sigue dependiendo de Command Prompt y conserva el comportamiento de seguridad y de las comillas del comando original.
Ningún convertidor en línea de propósito general de buena reputación puede realizar de forma fiable esta traducción entre lenguajes. Cargar un script también puede revelar contraseñas, rutas de red, tokens o comandos administrativos. Utilice herramientas locales como Visual Studio Code, Notepad++ o Microsoft Windows Script Host; para migraciones de mayor tamaño, reescriba y pruebe cada operación individualmente en lugar de confiar en un servicio de conversión automática.
BAT vs VBS: comparación de formatos
Cómo se comparan los formatos BAT y VBS en las propiedades que más importan para esta conversión.
| Propiedad | .BAT Windows Batch File | .VBS VBScript |
|---|---|---|
| Legible como texto plano | Sí | Sí |
| Formato de texto | Básico | Básico |
| Imágenes | No | No |
| Edición posterior | Fácil | Fácil |
| Se abre en un navegador web | No | No |
| Tamaño de archivo típico | Muy pequeño | Muy pequeño |
| Estándar abierto | No | No |
| Más adecuado para | Incrustación en aplicaciones | Incrustación en aplicaciones |
| Introducido | 1981 | 1996 |
| Desarrollador | Microsoft | Microsoft |