【问题标题】:Batch file to to open another batch file and then close itself批处理文件以打开另一个批处理文件,然后自行关闭
【发布时间】:2014-03-07 00:42:08
【问题描述】:

这就是我所拥有的

@echo off
start "%~dp0Suffering.bat" Suffering.bat
@echo off

我也试过

@echo off
start "%~dp0Suffering.bat" Suffering.bat
exit /b
@echo off

@echo off
start "%~dp0Suffering.bat" Suffering.bat
quit
@echo off

@echo off
"%~dp0Suffering.bat"
@echo off

问题是,当打开这个批处理文件时,它应该会打开“suffering.bat”,但它会打开一个烦人的 cmd 窗口,请求管理员权限。我只希望这批打开“suffering.bat”,没有别的……没有其他打开的窗口。有点像“suffering.bat”的快捷方式,因为我有一个 bat 到 exe 转换器,它只适用于一些批处理文件(不是痛苦.bat),我需要它的 exe 形式。有什么想法吗?

【问题讨论】:

  • 最后一个示例应该完全符合您的要求。当你运行它时会发生什么?如果您直接(从控制台窗口)运行痛苦.bat,会发生什么?
  • 直接运行时,痛苦.bat 工作正常。最后一个选项确实有效,但它是另一个无法通过我的 bat 到 exe 转换器转换的功能:(。我希望这不是我唯一的选择。“开始”命令适用于我的 bat 到 exe 转换器,所以会很好如果有一个选项看起来更像第二个和第三个示例,但使用命令而不是“退出”或“退出”,因为它们似乎不起作用。
  • 这个问题真的是关于特定的bat to exe转换器。没有它你可能会更好!我将发布一些纯 C 代码来启动批处理文件,希望这会有所帮助...

标签: windows batch-file cmd exe


【解决方案1】:

exit /b 告诉窗口退出批处理并保持cmd窗口打开。 也只能使用exit(不使用/b)来关闭窗口。

【讨论】:

    【解决方案2】:

    这个问题实际上是关于特定的 bat to exe 转换器。没有它你可能会更好!

    这是你在 C 中的做法:

    #include <stdlib.h>
    
    int main(int argc, char ** argv)
    {
        system("suffering.bat");
        return 0;
    }
    

    这比尝试让 bat 到 exe 转换器工作要简单得多。

    【讨论】:

    • 为什么要谈论 C?问题是关于打开另一个批处理文件的批处理文件。
    • @tedebus,哇,那是很久以前的事了!在问题的 cmets 中给出了发布 C 代码的原因(因为它是一个更好的选择,因为 OP 的目标是生成可执行文件),但它也应该包含在我现在已经完成的答案中。
    • 请注意,问题中发布的批处理文件没有任何问题。它在作为批处理文件运行时完美运行,只有当它被转换为可执行文件时才会出现异常。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-24
    • 1970-01-01
    相关资源
    最近更新 更多