如果没有第三方工具,如何将.bat文件“转换”为.exe?

您所在的位置:网站首页 bat转成exe 如果没有第三方工具,如何将.bat文件“转换”为.exe?

如果没有第三方工具,如何将.bat文件“转换”为.exe?

2024-07-08 22:18| 来源: 网络整理| 查看: 265

一种非常明显的方法是使用IEXPRESS --这是一种古老的内置工具,可以创建自解压缩包并能够执行提取后命令。下面是IEXPRESS sed-指令/.bat文件,它用打包的.bat创建一个自解压.exe。它接受两个参数-要转换的.bat文件和目标可执行文件:

代码语言:javascript复制 ;@echo off ; rem https://github.com/npocmaka/batch.scripts/edit/master/hybrids/iexpress/bat2exeIEXP.bat ;if "%~2" equ "" ( ; echo usage: %~nx0 batFile.bat target.Exe ;) ;set "target.exe=%__cd__%%~2" ;set "batch_file=%~f1" ;set "bat_name=%~nx1" ;set "bat_dir=%~dp1" ;copy /y "%~f0" "%temp%\2exe.sed" >nul ;(echo()>>"%temp%\2exe.sed" ;(echo(AppLaunched=cmd.exe /c "%bat_name%")>>"%temp%\2exe.sed" ;(echo(TargetName=%target.exe%)>>"%temp%\2exe.sed" ;(echo(FILE0="%bat_name%")>>"%temp%\2exe.sed" ;(echo([SourceFiles])>>"%temp%\2exe.sed" ;(echo(SourceFiles0=%bat_dir%)>>"%temp%\2exe.sed" ;(echo([SourceFiles0])>>"%temp%\2exe.sed" ;(echo(%%FILE0%%=)>>"%temp%\2exe.sed" ;iexpress /n /q /m %temp%\2exe.sed ;del /q /f "%temp%\2exe.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= AdminQuietInstCmd= UserQuietInstCmd=

示例:

代码语言:javascript复制bat2exeIEXP.bat myBatFile.bat MyExecutable.exe

这实际上应该适用于所有的Windows机器,但有一个主要的限制--您不能将参数传递给创建的.exe文件。

因此,另一种可能的方法是查看.NET编译器(在几乎每台win机器上都应该是可用的),我选择了Jscript.net。这是一个混合的jscript.net/.bat脚本,它将读取.batch文件content.Will,使用.bat文件内容创建另一个jscript.net,编译后将在临时文件夹中创建一个新的bat文件,并调用it.And将接受命令行参数。(解释可能看起来很复杂,但实际上很简单):

代码语言:javascript复制@if (@X)==(@Y) @end /* JScript comment @echo off setlocal del %~n0.exe /q /s >nul 2>nul for /f "tokens=* delims=" %%v in ('dir /b /s /a:-d /o:-n "%SystemRoot%\Microsoft.NET\Framework\*jsc.exe"') do ( set "jsc=%%v" ) if not exist "%~n0.exe" ( "%jsc%" /nologo /out:"%~n0.exe" "%~dpsfnx0" ) %~n0.exe "%jsc%" %* del /q /f %~n0.exe 1>nul 2>nul endlocal & exit /b %errorlevel% */ //https://github.com/npocmaka/batch.scripts/blob/master/hybrids/.net/bat2exe.bat import System; import System; import System.IO; import System.Diagnostics; var arguments:String[] = Environment.GetCommandLineArgs(); if (arguments.length3){ binName=Path.GetFileName(arguments[3]); } var batchContent:byte[]= File.ReadAllBytes(arguments[2]); var compilerLoc=arguments[1]; var content="[" for (var i=0;i


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3