Convertir BAT en VBS
Réécrire les commandes batch Windows en VBScript pour WSH, COM, WMI, le registry et l’automatisation des fichiers.
Comment convertir bat en fichier vbs
- Programmation
- Aucune note pour l'instant.
Un système de déploiement ou un hôte Windows peut nécessiter un fichier VBScript au lieu d’un script de commandes, notamment pour l’automatisation graphique de COM, WMI, du registre ou de Windows Script Host. Comme BAT et VBS utilisent des langages et des modèles d’exécution différents, la conversion nécessite de réécrire les commandes plutôt que de modifier l’extension du nom de fichier.
Qu’est-ce que le format BAT ?
Un fichier BAT est un script en texte brut interprété par cmd.exe. Il automatise les programmes en ligne de commande, les opérations sur les fichiers, les variables d’environnement, les changements de répertoire, les boucles, les conditions, les étiquettes, la redirection et les vérifications des niveaux d’erreur sous Windows.
Les administrateurs et les développeurs créent des fichiers BAT avec Notepad, Notepad++, Visual Studio Code ou des éditeurs en ligne de commande. L’extension .cmd associée est également utilisée pour les scripts Command Prompt. Les fichiers BAT et CMD peuvent être exécutés depuis l’Explorateur de fichiers, Command Prompt, le Planificateur de tâches, les scripts d’ouverture de session, les systèmes de déploiement et les programmes d’installation.
Qu’est-ce que le format VBS ?
Un fichier VBS est un programme VBScript en texte brut exécuté par Windows Script Host via wscript.exe ou cscript.exe. VBScript fournit des variables, des procédures, des instructions conditionnelles, des boucles structurées, l’automatisation COM, l’accès au registre, Windows Management Instrumentation, des objets du système de fichiers et des boîtes de dialogue.
VBS est utile lorsqu’un script doit contrôler une application compatible avec COM, interroger WMI, accéder au registre ou s’exécuter via un hôte de scripts plutôt que directement sous cmd.exe. Il n’est pas intrinsèquement plus rapide ou plus compact que BAT. Microsoft a déconseillé l’utilisation de VBScript, et Windows Script Host peut être limité par une stratégie ou désactivé par un logiciel de sécurité : vérifiez donc les systèmes cibles avant la migration.
Comment convertir un fichier BAT en VBS
Il n’existe pas de convertisseur de format fiable en un clic. La syntaxe BAT ne peut pas être interprétée comme du VBScript, et un outil automatisé ne peut pas déterminer de manière fiable si une commande shell doit être remplacée par un objet VBScript, conservée via cmd.exe ou repensée.
- Ouvrez le fichier BAT dans Notepad++, Visual Studio Code ou un autre éditeur de texte brut. N’utilisez pas de traitement de texte.
- Répertoriez les commandes, les arguments, les chemins entre guillemets, les variables d’environnement, la redirection, la gestion des erreurs, les étiquettes, les boucles et les programmes externes.
- Créez un nouveau fichier tel que
backup.vbs; conservez le fichier BAT d’origine pour comparaison et restauration. - Remplacez les opérations par des objets VBScript natifs lorsque cela est possible, puis utilisez
WScript.Shell.RunouExecpour les commandes qui n’ont pas d’équivalent approprié. - Testez avec
cscript.exe //nologo backup.vbsafin que la sortie et les erreurs apparaissent dans la console. Utilisezwscript.exe backup.vbslorsqu’aucune fenêtre de console n’est souhaitée.
Par exemple, ce code BAT :
mkdir C:\Logs
copy C:\Data\report.csv C:\Logs\report.csv
peut devenir :
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
Le répertoire parent de destination doit déjà exister ; créez séparément les niveaux de répertoire manquants lorsque cela est nécessaire. Pour une commande sans équivalent VBScript pratique, conservez explicitement la commande :
Set shell = CreateObject("WScript.Shell")
exitCode = shell.Run("cmd.exe /c ipconfig /flushdns", 0, True)
If exitCode <> 0 Then WScript.Quit exitCode
Traduisez délibérément les constructions courantes :
echo messagedevient normalementWScript.Echo "message".pausenécessite un remplacement tel queInputBox,MsgBoxou un délai intentionnel.if exist filedevientfso.FileExists("file"); les vérifications de répertoire utilisentfso.FolderExists.- Les boucles
forde batch deviennent des boucles VBScriptForouFor Each. %NAME%n’est pas une variable VBScript. Affectez une valeur ou récupérez l’environnement du processus avecshell.ExpandEnvironmentStrings("%NAME%").- Les paramètres positionnels de batch tels que
%1nécessitentWScript.Arguments(0); les étiquettes de batch etgotonécessitent une refonte du flux de contrôle.
Enregistrez le résultat en texte brut avec l’extension .vbs. Dans Notepad, choisissez File → Save As, définissez Save as type sur All files et saisissez le nom du fichier entre guillemets si nécessaire. Le texte ANSI ou UTF-16 little-endian est largement compatible ; la prise en charge de l’encodage UTF-8 dépend de la version de Windows Script Host. Testez donc l’encodage choisi sur le système cible.
Compatibilité et tests
Renommer script.bat en script.vbs ne le convertit pas. VBScript rejettera les commandes de batch telles que echo, set, if exist, l’expansion des pourcentages, les étiquettes et la redirection shell, sauf si elles sont réécrites ou transmises à cmd.exe.
Les guillemets du batch, l’expansion différée, ERRORLEVEL, les pipes, la redirection, le comportement des caractères génériques, les règles relatives au répertoire courant et les privilèges administratifs peuvent modifier le résultat. Vérifiez chaque code de sortie, utilisez autant que possible des chemins complets, placez entre guillemets les chemins contenant des espaces et effectuez les tests sur des copies des fichiers de production. Un script VBS qui appelle cmd.exe /c dépend toujours de Command Prompt et conserve le comportement de sécurité et de gestion des guillemets de la commande d’origine.
Aucun convertisseur en ligne généraliste digne de confiance ne peut effectuer de manière fiable cette traduction de langage. Le téléversement d’un script peut également divulguer des mots de passe, des chemins réseau, des jetons ou des commandes administratives. Utilisez des outils locaux tels que Visual Studio Code, Notepad++ ou Microsoft Windows Script Host ; pour les migrations plus importantes, réécrivez et testez chaque opération individuellement au lieu de faire confiance à un service de conversion automatique.
Comparaison du format BAT vs VBS
Comparaison entre les formats BAT et VBS sur les propriétés les plus importantes pour cette conversion.
| Propriété | .BAT Windows Batch File | .VBS VBScript |
|---|---|---|
| Lisible en texte brut | Oui | Oui |
| Mise en forme du texte | Basique | Basique |
| Images | Non | Non |
| Modification ultérieure | Facile | Facile |
| S’ouvre dans un navigateur web | Non | Non |
| Taille de fichier typique | Très petit | Très petit |
| Norme ouverte | Non | Non |
| Idéal pour | Intégration dans des applications | Intégration dans des applications |
| Date d’introduction | 1981 | 1996 |
| Développeur | Microsoft | Microsoft |