Konvertieren Sie ein Stapel (BAT) -Skript in eine ausführbare Datei (EXE)
Batch-Dateien und ausführbare Dateien funktionieren im Grunde genauso. Beide sind einfach eine Reihe von Anweisungen und eine Logik zum Ausführen von Windows. Warum sollten Sie also eine Batchdatei in eine ausführbare Datei konvertieren, wenn sie im Wesentlichen gleich funktioniert? Hier sind einige Gründe:
- Portabilität - Sie können zusätzliche Tools in Ihre EXE-Datei einfügen, von denen die Batchdatei abhängig ist.
- Schutz - Eine EXE-Datei schützt Ihr Quellenskript, um sicherzustellen, dass es nicht versehentlich geändert wird.
- Komfort - Ausführbare Dateien können an das Windows-Startmenü und / oder die Windows 7-Taskleiste angeheftet werden.
Mit dem folgenden Skript können Sie leicht eine ausführbare Datei aus einer Batchdatei zusammen mit den erforderlichen eingebetteten Tools erstellen.
Aufbau
Dieses Skript nutzt einen erweiterten 7-Zip-SFX (SelF eXtractor), um die Stapeldatei mit den mitgelieferten Tools zu bündeln und auszuführen. Sie müssen diese herunterladen (am Ende bereitgestellte Links) und sie in ein einziges Verzeichnis extrahieren.
Wenn Sie alles heruntergeladen haben, setzen Sie die Variable 'PathTo7Zip' im Skript auf den Speicherort, an dem diese Dateien heruntergeladen wurden.
Das Skript
@ECHO OFF ECHO Make EXE von BAT ECHO Geschrieben von: Jason Faulkner ECHO SysadminGeek.com ECHO. ECHO. REM-Verwendung: REM MakeExeFromBat BatFileToConvert [IncludeFile1] [IncludeFile2] […] Erforderliche REM-Parameter: REM BatFileToConvert REM-Batchdatei für die Ausgabe der Exe-Datei. REM REM Optionale Parameter: REM IncludeFile REM Zusätzliche Dateien, die in der Exe-Datei enthalten sein sollen. REM Sie können externe Tools einschließen, die von der Batchdatei verwendet werden, damit sie auf dem ausführenden Computer verfügbar sind. SETLOCAL REM-Konfiguration (keine Anführungszeichen erforderlich): SET PathTo7Zip = REM ---- Ändern Sie nichts unterhalb dieser Zeile ---- SET OutputFile = "% ~ n1.exe" SET SourceFiles = "% TEMP% MakeEXE_files.txt" SET Config = "% TEMP% MakeEXE_config.txt" SET Source7ZFile = "% Temp% MakeEXE.7z" REM Vorhandene Dateien entfernen IF EXIST% OutputFile% DEL% OutputFile% REM Quellarchiv erstellen ECHO "% ~ dpnx1">% SourceFiles%: AddInclude WENN % 2 == GOTO EndInclude ECHO "% ~ dpnx2" >>% SourceFiles% SHIFT / 2 GOTO AddInclude: EndInclude "% PathTo7Zip% 7za.exe" ein% Source7ZFile% @% SourceFiles% REM Build-Konfigurationsdatei ECHO ;! @ Install @! UTF-8! >% Config% ECHO RunProgram = "% ~ nx1" >>% Config% ECHO;! @ InstallEnd @! >>% Config% REM Erstellen von EXE COPY / B "% PathTo7Zip% 7zsd.sfx" +% Config% +% Source7ZFile%% OutputFile% REM Bereinigen von IF EXIST% SourceFiles% DEL% SourceFiles% IF EXIST% Config% DEL% Config % IF EXIST% Source7ZFile% DEL% Source7ZFile% ENDLOCAL
Fazit
Beachten Sie, dass die resultierende Datei genau wie die Quell-BAT-Datei ausgeführt wird, dies jedoch keine echte Konvertierung von Stapel zu ausführbar ist. Die resultierende Datei ist eine EXE-Datei, sie sollte jedoch für selbstextrahierende Installationsprogramme verwendet werden. Wenn Sie die resultierende EXE-Datei ausführen, läuft der Prozess etwa so ab:
- Der Inhalt der EXE-Datei wird in das temporäre Verzeichnis extrahiert.
- Die vom Skript generierte Konfigurationsdatei wird gelesen.
- Die in der EXE-Datei enthaltene Batchdatei wird in einem neuen Befehlsfenster ausgeführt.
- Wenn Sie fertig sind, werden die temporären Dateien entfernt.
Unter Windows Vista und neuen Betriebssystemen wird möglicherweise das folgende Meldungsfeld angezeigt, nachdem das Skript ausgeführt wurde. Nachdem Sie "Dieses Programm korrekt installiert" ausgewählt haben, wird das Meldungsfeld für diese Datei zukünftig nicht mehr angezeigt.
Da die EXE-Datei in einem neuen Fenster gestartet wird, funktioniert die typische Art der Protokollierung der Ausgabe (mithilfe des Zeichens '>') nicht wie erwartet. Um die Ausgabe zu protokollieren, müssen Sie dies nativ in Ihrem Quellenskript behandeln.
Trotz dieser geringfügigen Unannehmlichkeiten kann es sehr nützlich sein, eine Batchdatei in eine ausführbare Datei zu konvertieren.
Links
Laden Sie Make EXE von BAT Script von Sysadmin Geek herunter
Laden Sie das 7-Zip-Befehlszeilentool herunter
Laden Sie 7-Zip Advanced 7zSD SFX herunter