遵循与此guide相同的步骤。我正在尝试从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文件时,该过程将如下所示:
答案 0 :(得分:13)
请参阅此 How can a .bat file be 'converted' to .exe without third party tools?
原始脚本接受两个参数-您要转换的.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=
答案 1 :(得分:1)
所有安装了.NET的Windows机器都在Windows XP中以%windir%\ Microsoft.NET \ Framework(对于32位)或Framework64(对于64位)附带名为vbc.exe,csc.exe和jsc.exe的文件。文件夹名称以“ v”开头。
有关Visual Basic编译器的指南:
https://docs.microsoft.com/en-us/dotnet/visual-basic/reference/command-line-compiler/index
示例命令:
https://docs.microsoft.com/en-us/dotnet/visual-basic/reference/command-line-compiler/sample-compilation-command-lines
脚本指南:
http://www.phpied.com/make-your-javascript-a-windows-exe/
从@Itchy进行的简单演练,使用csc.exe将批处理文件捆绑到exe文件:
How can a .bat file be 'converted' to .exe without third party tools?
在同一文件夹中,也可能会找到一个名为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=2ahUKEwjshc6589_lAhXXXSsKHcTaBlUQ6AEwD3oECAYQAQ#v=onepage&q=guide%20%20vbc.exe&f=false