遵循与本指南相同的步骤。我正在尝试从 bat 转换为 exe,而不安装任何新软件,例如 Bat to Exe Converter。我使用这种方法的原因是因为我工作场所中的所有机器都已经安装了 7zip 并且可以使用它,但是我不允许使用主服务器上不存在的外部软件来使脚本工作,以便在主服务器上的任何机器上兼容。公司。
我有以下TEST.bat:
ECHO This is a Test bat to exe
pause
和 config.txt:
;!@Install@!UTF-8!
RunProgram="TEST.bat"
;!@InstallEnd@!
然后我调用以下命令行(在另一个.bat中):
COPY /B "%PathTo7Zip%\7zCon.sfx" + %Config% + %Source7ZFile% %OutputFile%
%PathTo7Zip%
是7zCon.sfx的目录
%Config%
就是上面的config.txt文件
%Source7ZFile%
是我的 .7z 存档
%OutputFile%
是我的输出TEST.exe文件,当我根据指南作者调用它时,它应该运行bat文件。
但是,调用 TEST.exe
会触发解压缩 .7z 存档(这是预期的),然后退出而不运行 TEST.bat。
然而作者解释:
结论:
需要注意的是,虽然生成的文件与源 BAT 文件的运行方式完全相同,但这并不是真正的批处理到可执行文件的转换。生成的文件是一个 EXE,但它旨在用于自解压安装程序。当您执行生成的 EXE 文件时,过程如下所示:
请参阅此如何在没有第三方工具的情况下将.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=
所有安装了 .NET 的 Windows 计算机都带有名为 vbc.exe、csc.exe 和 jsc.exe 的文件,位于 %windir%\Microsoft.NET\Framework(适用于 32 位)或 Framework64(适用于 64 位)的文件夹名称中以“v”开头。
Visual Basic 编译器指南:
https://learn.microsoft.com/en-us/dotnet/visual-basic/reference/command-line-compiler/index
命令示例:
https://learn.microsoft.com/en-us/dotnet/visual-basic/reference/command-line-compiler/sample-compilation-command-lines
J 脚本指南:
http://www.phpied.com/make-your-javascript-a-windows-exe/
@Itchy 的简单演练,使用 csc.exe 将批处理文件捆绑到 exe 文件:
如何在没有第三方工具的情况下将 .bat 文件“转换”为 .exe?
在同一文件夹中,还可能找到一个名为 ngen.exe 的文件,该文件“生成本机代码,因此应用程序不需要在运行时经历即时编译过程”。
参见:
https://books.google.com.au/books?id=iZM1jyqiyakC&pg=PA453&lpg=PA453&dq=guide++vbc.exe&source=bl&ots=UB041mSfni&sig=ACfU3U0xtmS8X9p0eDKD-u6bt-WvOVCbmQ&hl=en&sa=X&ved=2ahUKE wjshc6589_lAhXXXSsKHcTaBLUQ6AEwD3oECAYQAQ#v=onepage&q=引导%20%20vbc.exe&f=false
一个简单的bat转exe工具 https://github.com/x1y9/ExWrapper
ExWrapper 的特点: