为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

德玛西亚99 2019-10-17 16:15:47
有很多理由想要“转换” .bat为.exe-隐藏/混淆实现,密码,资源路径,从批处理文件创建服务...并且主要是使您的工作看起来比实际的更加复杂和重要。是。还有很多不想使用第三方工具的原因。那么,如果要在.exe不使用外部软件的情况下将“批处理”文件“转换”为怎么办?(用引号引起来的转换是因为我认为没有真正的方法可以将批处理文件编译为可执行文件。有太多的滥用曲折技术和错误被广泛使用,并且我所知道的所有工具实际上都创建了一个临时.bat文件然后调用它)
查看完整描述

3 回答

?
忽然笑

TA贡献1806条经验 获得超5个赞

我确实知道如何将bat / cmd手动转换为exe,请确保bat / cmd文件名仅包含字母和数字。以管理员身份打开“ IExpress向导 ”。


选择“创建新的自我提取指令文件”

选择“提取文件并运行安装命令”

给包裹起任何名字

“无提示”为“确认提示”

“许可协议”的“不显示许可”

单击“添加”作为“打包文件”,从中选择bat / cmd文件

然后在“要启动的安装程序”的“安装程序”文本框中,键入cmd /c,后跟bat / cmd文件的全名,(例如:emptyrecyclebin.bat=> cmd /c emptyrecyclebin.bat)

保留“安装后命令”原样

“隐藏”表示“显示窗口”

“完成消息”为“无消息”

单击“浏览”,然后选择将exe下载到的位置

启用“从用户隐藏文件提取进度动画”

禁用“使用包内的长文件名存储文件”

对于“配置重新启动”,绝对为“不重新启动”

如果要稍后重新编译,请保存SED。

然后创建包!命令窗口应迅速出现并消失

导航至将exe下载至的位置,然后 享受!


查看完整回答
反对 回复 2019-10-17
?
翻翻过去那场雪

TA贡献2065条经验 获得超13个赞

您还可以开发一个简单的exe,仅调用您的蝙蝠脚本。


例如,您可以用C#编写一个(我不是C#-Pro,这实际上是我的第一个程序,我从其他Stackoverflow帖子中复制了很多程序。):


using System;

using System.Diagnostics;

using System.Windows.Forms;

using System.IO;


class BatCaller {

    static void Main() {

        var batFile = System.Reflection.Assembly.GetEntryAssembly().Location.Replace(".exe", ".bat");

        if (!File.Exists(batFile)) {

            MessageBox.Show("The launch script could not be found.", "Critical error", MessageBoxButtons.OK, MessageBoxIcon.Error);

            System.Environment.Exit(42);

        }

        var processInfo = new ProcessStartInfo("cmd.exe", "/c \"" + batFile + "\"");

        processInfo.CreateNoWindow = true;

        processInfo.UseShellExecute = false;

        processInfo.RedirectStandardError = true;

        processInfo.RedirectStandardOutput = true;


        var process = Process.Start(processInfo);


        process.OutputDataReceived += (object sender, DataReceivedEventArgs e) => Console.WriteLine("output>>" + e.Data);

        process.BeginOutputReadLine();


        process.ErrorDataReceived += (object sender, DataReceivedEventArgs e) => Console.WriteLine("error>>" + e.Data);

        process.BeginErrorReadLine();


        process.WaitForExit();


        Console.WriteLine("ExitCode: {0}", process.ExitCode);

        process.Close();

    }

}

如果将上面的代码存储到MySuperApp.bat旁边的MySuperApp.cs中,然后对其进行编译csc.exe /target:winexe MySuperApp.cs(甚至可以添加/win32icon:MySuperApp.ico以添加精美的图标),它将生成MySuperApp.exe。


启动时MySuperApp.exe将调用MySuperApp.bat(同名的bat文件)。



查看完整回答
反对 回复 2019-10-17
  • 3 回答
  • 0 关注
  • 2564 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信