无需额外的外部软件即可将.bat转换为.exe(创建SFX)

Had*_*rah 9 windows 7zip batch-file

按照与本指南相同的步骤操作.我试图从bat转换为exe而不安装任何新的软件,如Bat to Exe Converter.我使用这种方法的原因是因为我工作场所中的所有机器都安装了7zip并且可以使用它,但我不允许使用主服务器上不存在的外部软件使脚本工作,以便在任何机器上兼容公司.

我有以下TEST.bat:

ECHO This is a Test bat to exe
pause
Run Code Online (Sandbox Code Playgroud)

config.txt:

;!@Install@!UTF-8! 
RunProgram="TEST.bat" 
;!@InstallEnd@! 
Run Code Online (Sandbox Code Playgroud)

然后我调用以下命令行(在另一个.bat中):

COPY /B "%PathTo7Zip%\7zCon.sfx" + %Config% + %Source7ZFile% %OutputFile%
Run Code Online (Sandbox Code Playgroud)

%PathTo7Zip%7zCon.sfx 的目录%Config%是上面的config.txt文件 %Source7ZFile%是我的.7z存档,并且%OutputFile%是我的输出TEST.exe文件,应该根据指南的作者调用它时应该运行bat文件.但是,调用TEST.exe触发器解压缩.7z存档(这是预期的),然后退出而不运行TEST.bat.

然而,作者解释说:

结论:

请务必注意,虽然生成的文件与源BAT文件运行完全相同,但这不是真正的批处理到可执行转换.生成的文件是EXE,但它旨在用于自解压安装程序.当您执行生成的EXE文件时,该过程如下所示:

  1. EXE文件的内容将解压缩到临时目录.
  2. 读取脚本生成的配置文件.
  3. EXE文件中包含的批处理文件在新的命令窗口中执行.
  4. 完成后,将删除临时文件.

Hac*_*koo 28

请参阅此如何在没有第三方工具的情况下将.bat文件"转换"为.exe文件?

原始脚本接受两个参数 - 要转换的.bat文件和目标可执行文件.

我做了一点修改来接受一个参数:只是你要转换的.bat文件.

因此,在这种情况下,您可以将批处理文件拖放到此脚本bat2exeIEXP.bat上,它将转换为与批处理文件同名的exe文件.

在此输入图像描述

;@echo off
;Title Converting batch scripts to file.exe with iexpress
;Mode 75,3 & color 0A
;Rem Original Script https://github.com/npocmaka/batch.scripts/edit/master/hybrids/iexpress/bat2exeIEXP.bat
;echo(
;if "%~1" equ "" (
    ;echo  Usage : Drag and Drop your batch file over this script:"%~nx0"  
    ;Timeout /T 5 /nobreak>nul & Exit
;)
;set "target.exe=%__cd__%%~n1.exe"
;set "batch_file=%~f1"
;set "bat_name=%~nx1"
;set "bat_dir=%~dp1"
;Set "sed=%temp%\2exe.sed"
;echo              Please  wait a while ...  Creating "%~n1.exe" ...
;copy /y "%~f0" "%sed%" >nul
;(
    ;(echo()
    ;(echo(AppLaunched=cmd /c "%bat_name%")
    ;(echo(TargetName=%target.exe%)
    ;(echo(FILE0="%bat_name%")
    ;(echo([SourceFiles])
    ;(echo(SourceFiles0=%bat_dir%)
    ;(echo([SourceFiles0])
    ;(echo(%%FILE0%%=)
;)>>"%sed%"

;iexpress /n /q /m %sed%
;del /q /f "%sed%"
;exit /b 0

[Version]
Class=IEXPRESS
SEDVersion=3
[Options]
PackagePurpose=InstallApp
ShowInstallProgramWindow=0
HideExtractAnimation=1
UseLongFileName=1
InsideCompressed=0
CAB_FixedSize=0
CAB_ResvCodeSigning=0
RebootMode=N
InstallPrompt=%InstallPrompt%
DisplayLicense=%DisplayLicense%
FinishMessage=%FinishMessage%
TargetName=%TargetName%
FriendlyName=%FriendlyName%
AppLaunched=%AppLaunched%
PostInstallCmd=%PostInstallCmd%
AdminQuietInstCmd=%AdminQuietInstCmd%
UserQuietInstCmd=%UserQuietInstCmd%
SourceFiles=SourceFiles

[Strings]
InstallPrompt=
DisplayLicense=
FinishMessage=
FriendlyName=-
PostInstallCmd=<None>
AdminQuietInstCmd=
Run Code Online (Sandbox Code Playgroud)