Converti bat in vbs

Converti BAT in VBS

Riscrivere i comandi batch di Windows in VBScript per WSH, COM, WMI, registro di sistema e automazione dei file.

Come convertire bat in vbs file

Un sistema di distribuzione o un host Windows può richiedere un file VBScript invece di uno script di comandi, in particolare per l'automazione COM, WMI, del registro di sistema o grafica tramite Windows Script Host. Poiché BAT e VBS utilizzano linguaggi e modelli di esecuzione diversi, la conversione richiede la riscrittura dei comandi anziché la modifica dell'estensione del nome file.

Che cos'è il formato BAT

Un file BAT è uno script di testo normale interpretato da cmd.exe. Automatizza programmi da riga di comando, operazioni sui file, variabili d'ambiente, modifiche delle directory, cicli, condizioni, etichette, reindirizzamenti e controlli del livello di errore in Windows.

Amministratori e sviluppatori creano file BAT con Notepad, Notepad++, Visual Studio Code o editor da riga di comando. Anche l'estensione .cmd viene utilizzata per gli script del Prompt dei comandi. I file BAT e CMD possono essere eseguiti da Esplora file, dal Prompt dei comandi, dall'Utilità di pianificazione, dagli script di accesso, dai sistemi di distribuzione e dai programmi di installazione.

Che cos'è il formato VBS

Un file VBS è un programma VBScript in testo normale eseguito da Windows Script Host tramite wscript.exe o cscript.exe. VBScript fornisce variabili, procedure, istruzioni condizionali, cicli strutturati, automazione COM, accesso al registro di sistema, Windows Management Instrumentation, oggetti del file system e finestre di messaggio.

VBS è utile quando uno script deve controllare un'applicazione abilitata per COM, eseguire query WMI, accedere al registro di sistema o essere eseguito tramite un host di script invece che direttamente sotto cmd.exe. Non è intrinsecamente più veloce o più piccolo di BAT. Microsoft ha deprecato VBScript e Windows Script Host può essere limitato dai criteri o disabilitato dal software di sicurezza; pertanto, controllare i sistemi di destinazione prima della migrazione.

Come convertire un file BAT in VBS

Non esiste un convertitore di formato con un clic affidabile. La sintassi BAT non può essere interpretata come VBScript e uno strumento automatico non può determinare in modo affidabile se un comando della shell debba essere sostituito da un oggetto VBScript, mantenuto tramite cmd.exe o riprogettato.

  1. Aprire il file BAT in Notepad++, Visual Studio Code o un altro editor di testo normale. Non utilizzare un elaboratore di testi.
  2. Fare un inventario dei comandi, degli argomenti, dei percorsi tra virgolette, delle variabili d'ambiente, dei reindirizzamenti, della gestione degli errori, delle etichette, dei cicli e dei programmi esterni.
  3. Creare un nuovo file, ad esempio backup.vbs; conservare il file BAT originale per il confronto e il ripristino.
  4. Sostituire le operazioni con oggetti VBScript nativi quando è pratico, quindi utilizzare WScript.Shell.Run o Exec per i comandi che non hanno un equivalente adeguato.
  5. Eseguire i test con cscript.exe //nologo backup.vbs affinché l'output e gli errori vengano visualizzati nella console. Utilizzare wscript.exe backup.vbs quando non si desidera alcuna finestra della console.

Ad esempio, questo codice BAT:

mkdir C:\Logs
copy C:\Data\report.csv C:\Logs\report.csv

può diventare:

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

La directory principale della destinazione deve già esistere; creare separatamente i livelli di directory mancanti quando necessario. Per un comando senza un equivalente VBScript pratico, mantenere esplicitamente il comando:

Set shell = CreateObject("WScript.Shell")
exitCode = shell.Run("cmd.exe /c ipconfig /flushdns", 0, True)
If exitCode <> 0 Then WScript.Quit exitCode

Tradurre deliberatamente i costrutti comuni:

  • echo message normalmente diventa WScript.Echo "message".
  • pause richiede una sostituzione, come InputBox, MsgBox o un ritardo intenzionale.
  • if exist file diventa fso.FileExists("file"); per i controlli delle directory utilizzare fso.FolderExists.
  • I cicli batch for diventano cicli VBScript For o For Each.
  • %NAME% non è una variabile VBScript. Assegnare un valore oppure recuperare l'ambiente del processo con shell.ExpandEnvironmentStrings("%NAME%").
  • I parametri posizionali batch come %1 richiedono WScript.Arguments(0); le etichette batch e goto richiedono una riprogettazione del flusso di controllo.

Salvare il risultato come testo normale con l'estensione .vbs. In Notepad, scegliere File → Save As, impostare Save as type su All files e inserire il nome del file tra virgolette, se necessario. Il testo ANSI o UTF-16 little-endian è ampiamente compatibile; il supporto alla codifica UTF-8 dipende dalla versione di Windows Script Host, quindi testare la codifica scelta sul sistema di destinazione.

Compatibilità e test

Rinominare script.bat in script.vbs non lo converte. VBScript rifiuterà comandi batch come echo, set, if exist, l'espansione percentuale, le etichette e il reindirizzamento della shell, a meno che non vengano riscritti o passati a cmd.exe.

Le virgolette batch, l'espansione ritardata, ERRORLEVEL, le pipe, i reindirizzamenti, il comportamento dei caratteri jolly, le regole della directory corrente e i privilegi amministrativi possono modificare il risultato. Controllare ogni codice di uscita, utilizzare percorsi completi quando possibile, racchiudere tra virgolette i percorsi contenenti spazi e testare con copie dei file di produzione. Uno script VBS che richiama cmd.exe /c dipende ancora dal Prompt dei comandi e conserva il comportamento di sicurezza e delle virgolette del comando originale.

Nessun convertitore online generico di buona reputazione può eseguire in modo affidabile questa traduzione di linguaggio. Il caricamento di uno script può inoltre divulgare password, percorsi di rete, token o comandi amministrativi. Utilizzare strumenti locali come Visual Studio Code, Notepad++ o Microsoft Windows Script Host; per migrazioni più ampie, riscrivere e testare ogni operazione singolarmente invece di affidarsi a un servizio di conversione automatica.

Confronto formato: BAT vs VBS

Come i formati BAT e VBS si confrontano sulle proprietà più importanti per questa conversione.

Confronto dei formati BAT e VBS
Proprietà .BAT Windows Batch File .VBS VBScript
Leggibile come testo semplice Sì Sì
Formattazione del testo Base Base
Immagini No No
Modifica successiva Facile Facile
Si apre in un browser web No No
Dimensione tipica del file Molto piccolo Molto piccolo
Standard aperto No No
Ideale per Incorporamento nelle applicazioni Incorporamento nelle applicazioni
Introdotto 1981 1996
Sviluppatore Microsoft Microsoft

Altre conversioni di file .bat

Conversione inversa

Conversione in .vbs
da altri formati

Condividi sui social media: