Convertir bat a vbs

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

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.

  1. Abra el archivo BAT en Notepad++, Visual Studio Code u otro editor de texto sin formato. No utilice un procesador de textos.
  2. Haga un inventario de los comandos, argumentos, rutas entre comillas, variables de entorno, redirecciones, gestión de errores, etiquetas, bucles y programas externos.
  3. Cree un archivo nuevo, como backup.vbs; conserve el archivo BAT original para compararlo y poder revertir los cambios.
  4. Reemplace las operaciones por objetos nativos de VBScript cuando sea práctico y, después, utilice WScript.Shell.Run o Exec para los comandos que no tengan un equivalente adecuado.
  5. Realice las pruebas con cscript.exe //nologo backup.vbs para que la salida y los errores aparezcan en la consola. Utilice wscript.exe backup.vbs cuando 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 message normalmente se convierte en WScript.Echo "message".
  • pause requiere un reemplazo como InputBox, MsgBox o una espera deliberada.
  • if exist file se convierte en fso.FileExists("file"); las comprobaciones de directorios utilizan fso.FolderExists.
  • Los bucles for de Batch se convierten en bucles For o For Each de VBScript.
  • %NAME% no es una variable de VBScript. Asigne un valor o recupere el entorno del proceso con shell.ExpandEnvironmentStrings("%NAME%").
  • Los parámetros posicionales de Batch, como %1, requieren WScript.Arguments(0); las etiquetas de Batch y goto requieren 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.

Comparación de los formatos de archivo BAT y VBS
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

Otras conversiones de archivos .bat

Conversión inversa

Convertir a .vbs
desde otros formatos

Compartir en redes sociales: