Konwertuj bat do vbs

Konwertuj BAT na VBS

Przepisz polecenia Windows batch na VBScript dla WSH, COM, WMI, registry oraz automatyzacji plików.

Jak konwertować bat do vbs

System wdrażania lub host Windows może wymagać pliku VBScript zamiast skryptu poleceń, szczególnie w przypadku automatyzacji COM, WMI, rejestru lub graficznego Windows Script Host. Ponieważ BAT i VBS używają różnych języków i modeli wykonywania, konwersja wymaga przepisania poleceń, a nie zmiany rozszerzenia nazwy pliku.

Czym jest format BAT

Plik BAT to skrypt w postaci zwykłego tekstu interpretowany przez cmd.exe. Automatyzuje programy wiersza poleceń, operacje na plikach, zmienne środowiskowe, zmiany katalogów, pętle, warunki, etykiety, przekierowania i sprawdzanie error-level w systemie Windows.

Administratorzy i deweloperzy tworzą pliki BAT za pomocą programów Notepad, Notepad++, Visual Studio Code lub edytorów wiersza poleceń. Powiązane rozszerzenie .cmd jest również używane w przypadku skryptów Command Prompt. Pliki BAT i CMD można uruchamiać z poziomu File Explorer, Command Prompt, Task Scheduler, skryptów logowania, systemów wdrażania i instalatorów.

Czym jest format VBS

Plik VBS to program VBScript w postaci zwykłego tekstu, wykonywany przez Windows Script Host za pośrednictwem wscript.exe lub cscript.exe. VBScript udostępnia zmienne, procedury, instrukcje warunkowe, ustrukturyzowane pętle, automatyzację COM, dostęp do rejestru, Windows Management Instrumentation, obiekty systemu plików i okna komunikatów.

VBS jest przydatny, gdy skrypt musi sterować aplikacją obsługującą COM, wykonywać zapytania WMI, uzyskiwać dostęp do rejestru lub działać za pośrednictwem hosta skryptów zamiast bezpośrednio w ramach cmd.exe. Nie jest z natury szybszy ani mniejszy od BAT. Firma Microsoft wycofała VBScript, a Windows Script Host może być ograniczony przez zasady lub wyłączony przez oprogramowanie zabezpieczające, dlatego przed migracją należy sprawdzić systemy docelowe.

Jak przekonwertować plik BAT na VBS

Nie istnieje niezawodny konwerter formatów działający jednym kliknięciem. Składnia BAT nie może być interpretowana jako VBScript, a narzędzie automatyczne nie jest w stanie niezawodnie określić, czy polecenie powłoki powinno zostać zastąpione obiektem VBScript, zachowane za pośrednictwem cmd.exe czy przeprojektowane.

  1. Otwórz plik BAT w programie Notepad++, Visual Studio Code lub innym edytorze zwykłego tekstu. Nie używaj edytora tekstu sformatowanego.
  2. Utwórz wykaz poleceń, argumentów, ścieżek w cudzysłowach, zmiennych środowiskowych, przekierowań, obsługi błędów, etykiet, pętli i programów zewnętrznych.
  3. Utwórz nowy plik, na przykład backup.vbs; zachowaj oryginalny plik BAT do celów porównawczych i wycofania zmian.
  4. W miarę możliwości zastąp operacje natywnymi obiektami VBScript, a następnie użyj WScript.Shell.Run lub Exec w przypadku poleceń, dla których nie ma odpowiednika.
  5. Testuj za pomocą cscript.exe //nologo backup.vbs, aby dane wyjściowe i błędy pojawiały się w konsoli. Użyj wscript.exe backup.vbs, jeśli okno konsoli nie jest potrzebne.

Na przykład ten kod BAT:

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

może stać się:

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

Katalog nadrzędny miejsca docelowego musi już istnieć; w razie potrzeby brakujące poziomy katalogów należy utworzyć osobno. W przypadku polecenia bez wygodnego odpowiednika w VBScript należy jawnie zachować polecenie:

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

Typowe konstrukcje należy tłumaczyć świadomie:

  • echo message zwykle staje się WScript.Echo "message".
  • pause wymaga zastąpienia, na przykład przez InputBox, MsgBox lub celowe opóźnienie.
  • if exist file staje się fso.FileExists("file"); do sprawdzania katalogów służy fso.FolderExists.
  • Pętle for z plików wsadowych stają się pętlami VBScript For lub For Each.
  • %NAME% nie jest zmienną VBScript. Przypisz wartość lub pobierz środowisko procesu za pomocą shell.ExpandEnvironmentStrings("%NAME%").
  • Parametry pozycyjne plików wsadowych, takie jak %1, wymagają użycia WScript.Arguments(0); etykiety plików wsadowych i goto wymagają przeprojektowania przepływu sterowania.

Zapisz wynik jako zwykły tekst z rozszerzeniem .vbs. W programie Notepad wybierz File → Save As, ustaw Save as type na All files i w razie potrzeby wpisz nazwę pliku w cudzysłowie. Tekst w kodowaniu ANSI lub UTF-16 little-endian jest szeroko kompatybilny; obsługa kodowania UTF-8 zależy od wersji Windows Script Host, dlatego wybrane kodowanie należy przetestować w systemie docelowym.

Zgodność i testowanie

Zmiana nazwy script.bat na script.vbs nie powoduje konwersji. VBScript odrzuci polecenia plików wsadowych, takie jak echo, set, if exist, rozwijanie procentowe, etykiety i przekierowanie powłoki, chyba że zostaną przepisane lub przekazane do cmd.exe.

Cudzysłowy plików wsadowych, opóźnione rozwijanie, ERRORLEVEL, potoki, przekierowania, działanie symboli wieloznacznych, zasady dotyczące bieżącego katalogu i uprawnienia administracyjne mogą zmienić wynik. Sprawdzaj każdy kod wyjścia, w miarę możliwości używaj w pełni kwalifikowanych ścieżek, ujmuj w cudzysłowy ścieżki zawierające spacje i testuj na kopiach plików produkcyjnych. Skrypt VBS wywołujący cmd.exe /c nadal zależy od Command Prompt i zachowuje sposób działania oraz zasady dotyczące cudzysłowów oryginalnego polecenia.

Żaden renomowany konwerter online ogólnego przeznaczenia nie jest w stanie niezawodnie wykonać takiego tłumaczenia języka. Przesłanie skryptu może również ujawnić hasła, ścieżki sieciowe, tokeny lub polecenia administracyjne. Używaj lokalnych narzędzi, takich jak Visual Studio Code, Notepad++ lub Microsoft Windows Script Host; w przypadku większych migracji przepisuj i testuj każdą operację osobno zamiast ufać usłudze automatycznej konwersji.

Porównanie formatu BAT z VBS

Jak formaty BAT i VBS wypadają w porównaniu pod względem najważniejszych cech dla tej konwersji.

Porównanie formatów plików BAT i VBS
Cecha .BAT Windows Batch File .VBS VBScript
Czytelny tekstowo Tak Tak
Formatowanie tekstu Podstawowy Podstawowy
Obrazy Nie Nie
Dalsza edycja Łatwy Łatwy
Otwiera się w przeglądarce internetowej Nie Nie
Typowy rozmiar pliku Bardzo mały Bardzo mały
Otwarty standard Nie Nie
Najlepszy do Osadzanie w aplikacjach Osadzanie w aplikacjach
Wprowadzono 1981 1996
Twórca Microsoft Microsoft

Dodatkowe formaty dla konwersji pliku
bat

Konwersja odwrotna

Konwersja do .vbs
z innych formatów

Udostępnij w mediach społecznościowych: