Când coborâți la acesta, lotificați fișiere șifișierele executabile funcționează cam la fel. Ambele sunt pur și simplu un set de instrucțiuni și logică pentru executarea Windows. Deci, de ce ai vrea să convertești un fișier batch într-un executabil dacă funcționează în același fel? Iată câteva motive:
- Portabilitate - puteți include instrumente suplimentare în fișierul dvs. EXE de care depinde fișierul lot.
- Protecție - un EXE oferă protecție scriptului sursă pentru a vă asigura că nu este modificat din neatenție.
- Convenabilitate - Fișierele executabile pot fi fixate în meniul Start Windows și / sau pe bara de activități Windows 7.
Cu scriptul de mai jos, puteți construi cu ușurință propriul fișier executabil dintr-un fișier de lot, completat și cu instrumentele încorporate necesare.
configurație
Acest script profită de un avansat 7-ZipSFX (SelF eXtractor) pentru a grupa și executa fișierul de lot cu orice instrumente incluse. Așadar, va trebui să descărcați (link-urile furnizate la final) și să le extrageți într-un singur director.
După ce ați descărcat totul, setați variabila „PathTo7Zip” din script la locația unde au fost descărcate aceste fișiere.
Scriptul
@ECHO OFF ECHO Make EXE From BAT ECHO Written by: Jason Faulkner ECHO SysadminGeek.com ECHO. ECHO. REM Usage: REM MakeExeFromBat BatFileToConvert [IncludeFile1] [IncludeFile2] [...] REM REM Required Parameters: REM BatFileToConvert REM Source batch file to use to produce the output Exe file. REM REM Optional Parameters: REM IncludeFile REM Additional files to include in the Exe file. REM You can include external tools used by the batch file so they are available on the executing machine. SETLOCAL REM Configuration (no quotes needed): SET PathTo7Zip= REM ---- Do not modify anything below this line ---- SET OutputFile="%~n1.exe" SET SourceFiles="%TEMP%MakeEXE_files.txt" SET Config="%TEMP%MakeEXE_config.txt" SET Source7ZFile="%Temp%MakeEXE.7z" REM Remove existing files IF EXIST %OutputFile% DEL %OutputFile% REM Build source archive ECHO "%~dpnx1" > %SourceFiles% :AddInclude IF {%2}=={} GOTO EndInclude ECHO "%~dpnx2" >> %SourceFiles% SHIFT /2 GOTO AddInclude :EndInclude "%PathTo7Zip%7za.exe" a %Source7ZFile% @%SourceFiles% REM Build config file ECHO ;!@Install@!utf-8! > %Config% ECHO RunProgram="%~nx1" >> %Config% ECHO ;!@InstallEnd@! >> %Config% REM Build EXE COPY /B "%PathTo7Zip%7zsd.sfx" + %Config% + %Source7ZFile% %OutputFile% REM Clean up IF EXIST %SourceFiles% DEL %SourceFiles% IF EXIST %Config% DEL %Config% IF EXIST %Source7ZFile% DEL %Source7ZFile% ENDLOCAL
Concluzie
Este important de menționat că, în timp ce rezultăfișierul rulează exact la fel ca fișierul BAT sursă, acesta nu este un lot adevărat pentru conversia executabilă. Fișierul rezultat este un EXE, cu toate acestea este destinat să fie utilizat pentru instalatori de auto-extragere. Când executați fișierul EXE rezultat, procesul merge astfel:
- Conținutul fișierului EXE este extras din directorul temp.
- Fișierul de configurare generat de script este citit.
- Fișierul de lot conținut în fișierul EXE este executat într-o fereastră de comandă nouă.
- Odată terminat, fișierele temp sunt eliminate.
Pe Windows Vista și pe noul sistem de operare, puteți vedeaurmând caseta de mesaj după executarea scriptului. După selectarea „Acest program instalat corect”, căsuța de mesaje nu va fi afișată în viitor pentru acest fișier.
Deoarece fișierul EXE se lansează într-o fereastră nouă,modul obișnuit de înregistrare a ieșirii (utilizând „>” char) nu va funcționa așa cum era de așteptat. Pentru a înregistra ieșirea, va trebui să o gestionați în mod nativ în scriptul sursă.
În ciuda acestor inconveniente minore, faptul că este capabil să convertiți un fișier de lot într-un executabil poate fi foarte util.
Link-uri
Descărcați Make EXE din BAT Script din Sysadmin Geek
Descărcați instrumentul pentru linia de comandă 7-Zip
Descărcați 7-Zip Advanced 7zSD SFX