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
- Programmazione
- Ancora nessuna valutazione.
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.
- Aprire il file BAT in Notepad++, Visual Studio Code o un altro editor di testo normale. Non utilizzare un elaboratore di testi.
- 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.
- Creare un nuovo file, ad esempio
backup.vbs; conservare il file BAT originale per il confronto e il ripristino. - Sostituire le operazioni con oggetti VBScript nativi quando è pratico, quindi utilizzare
WScript.Shell.RunoExecper i comandi che non hanno un equivalente adeguato. - Eseguire i test con
cscript.exe //nologo backup.vbsaffinché l'output e gli errori vengano visualizzati nella console. Utilizzarewscript.exe backup.vbsquando 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 messagenormalmente diventaWScript.Echo "message".pauserichiede una sostituzione, comeInputBox,MsgBoxo un ritardo intenzionale.if exist filediventafso.FileExists("file"); per i controlli delle directory utilizzarefso.FolderExists.- I cicli batch
fordiventano cicli VBScriptForoFor Each. %NAME%non è una variabile VBScript. Assegnare un valore oppure recuperare l'ambiente del processo conshell.ExpandEnvironmentStrings("%NAME%").- I parametri posizionali batch come
%1richiedonoWScript.Arguments(0); le etichette batch egotorichiedono 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.
| 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 |