Główna » jak » Konwertuj skrypt BAT (Batch) na plik wykonywalny (EXE)

    Konwertuj skrypt BAT (Batch) na plik wykonywalny (EXE)

    Kiedy do tego dojdzie, pliki wsadowe i pliki wykonywalne działają w podobny sposób. Oba są po prostu zbiorem instrukcji i logiki dla Windowsa. Dlaczego więc chcesz przekonwertować plik wsadowy na plik wykonywalny, jeśli zasadniczo działa on tak samo? Oto kilka powodów:

    • Przenośność - możesz dołączyć dodatkowe narzędzia do pliku EXE, od których zależy plik wsadowy.
    • Ochrona - plik EXE zapewnia ochronę skryptu źródłowego, aby zapobiec przypadkowej modyfikacji.
    • Wygoda - pliki wykonywalne można przypiąć do menu Start systemu Windows i / lub paska zadań systemu Windows 7.

    Poniższy skrypt pozwala łatwo zbudować własny plik wykonywalny z pliku wsadowego, wraz z wymaganymi narzędziami osadzonymi.

    Konfiguracja

    Skrypt ten korzysta z zaawansowanego 7-Zip SFX (SelF eXtractor) do pakowania i wykonywania pliku wsadowego z dołączonymi narzędziami. Musisz więc pobrać (linki dostarczone na końcu) i wyodrębnić je do jednego katalogu.

    Po pobraniu wszystkich danych ustaw zmienną "PathTo7Zip" w skrypcie na lokalizację, w której pobierane są te pliki.

    Scenariusz

    @ECHO OFF ECHO Make EXE From BAT ECHO Napisane przez: Jason Faulkner ECHO SysadminGeek.com ECHO. ECHO. REM Użycie: REM MakeExeFromBat BatFileToConvert [IncludeFile1] [IncludeFile2] [...] REM REM Wymagane parametry: REM BatFileToConvert REM Plik wsadowy źródłowy do użycia w celu utworzenia wyjściowego pliku Exe. REM REM Parametry opcjonalne: REM IncludeFile REM Dodatkowe pliki do uwzględnienia w pliku Exe. REM Możesz dołączyć zewnętrzne narzędzia używane przez plik wsadowy, aby były dostępne na maszynie wykonawczej. SETLOCAL REM Konfiguracja (bez cudzysłowów): SET PathTo7Zip = REM ---- Nie modyfikuj niczego poniżej tej linii ---- SET OutputFile = "% ~ n1.exe" SET SourceFiles = "% TEMP% MakeEXE_files.txt" SET Config = "% TEMP% MakeEXE_config.txt" SET Source7ZFile = "% Temp% MakeEXE.7z" REM Usuń istniejące pliki IF EXIST% OutputFile% DEL% OutputFile% REM Utwórz archiwum źródłowe ECHO "% ~ dpnx1">% SourceFiles%: AddInclude IF % 2 ==  GOTO EndInclude ECHO "% ~ dpnx2" >>% SourceFiles% SHIFT / 2 GOTO AddInclude: EndInclude "% PathTo7Zip% 7za.exe" a% Source7ZFile% @% SourceFiles% REM Zbuduj plik konfiguracyjny ECHO ;! @ Zainstaluj @! UTF-8! >% Config% ECHO RunProgram = "% ~ nx1" >>% Config% ECHO;! @ InstallEnd @! >>% Config% REM Build EXE COPY / B "% PathTo7Zip% 7zsd.sfx" +% Config% +% Source7ZFile%% OutputFile% REM Wyczyść IF EXIST% SourceFiles% DEL% SourceFiles% IF EXIST% Config% DEL% Config % IF EXIST% Source7ZFile% DEL% Source7ZFile% ENDLOCAL

    Wniosek

    Ważne jest, aby pamiętać, że podczas gdy wynikowy plik działa dokładnie tak samo, jak źródłowy plik BAT, nie jest to prawdziwa konwersja typu "batch to executable". Wynikowy plik jest plikiem EXE, jednak jest przeznaczony do instalowania samorozpakowujących się instalatorów. Po wykonaniu wynikowego pliku EXE proces przebiega mniej więcej tak:

    1. Zawartość pliku EXE jest rozpakowywana do katalogu temp.
    2. Plik konfiguracyjny wygenerowany przez skrypt zostanie odczytany.
    3. Plik wsadowy zawarty w pliku EXE jest wykonywany w nowym oknie komend.
    4. Po zakończeniu pliki tymczasowe są usuwane.

    W systemie Windows Vista i nowych systemach operacyjnych po uruchomieniu skryptu może pojawić się następujący komunikat. Po wybraniu "Ten program jest zainstalowany poprawnie", okno komunikatu nie będzie wyświetlane w przyszłości dla tego pliku.

    Ponieważ plik EXE uruchamia się w nowym oknie, typowy sposób zapisywania danych wyjściowych (za pomocą znaku ">") nie działa zgodnie z oczekiwaniami. Aby zapisać dane wyjściowe, musisz poradzić sobie z tym natywnie w swoim skrypcie źródłowym.

    Pomimo tych drobnych niedogodności, możliwość konwersji pliku wsadowego do pliku wykonywalnego może się bardzo przydać.

    Spinki do mankietów

    Pobierz Make EXE z BAT Script z Sysadmin Geek

    Pobierz 7-Zip Narzędzie wiersza poleceń

    Pobierz 7-Zip Advanced 7zSD SFX