Windows 如何从bat/cmd文件启动控制台应用程序,以便控制台输出位于bat内部?

Windows 如何从bat/cmd文件启动控制台应用程序,以便控制台输出位于bat内部?,windows,batch-file,cmd,exe,startup,Windows,Batch File,Cmd,Exe,Startup,我试过这个: 启动patcher.exe 暂停 然后出现我的应用程序的新控制台窗口 这是: cmd.exe patcher.exe 暂停 显示cmd而不执行我的程序 这是: cmd.exe 修补程序 暂停 然后出现cmd,我必须键入“exit”,然后我的pro启动,但在新控制台中再次启动 我需要我的控制台不显示,而是在启动的bat中写入所有消息。从对您问题的评论中,应用程序本身似乎打开了另一个控制台窗口 也许应用程序中有一些参数可以抑制它(请尝试patcher.exe/?或查看它的文档)。如果不

我试过这个:

启动patcher.exe
暂停

然后出现我的应用程序的新控制台窗口

这是:

cmd.exe patcher.exe
暂停

显示cmd而不执行我的程序

这是:

cmd.exe
修补程序
暂停

然后出现cmd,我必须键入“exit”,然后我的pro启动,但在新控制台中再次启动


我需要我的控制台不显示,而是在启动的bat中写入所有消息。

从对您问题的评论中,应用程序本身似乎打开了另一个控制台窗口


也许应用程序中有一些参数可以抑制它(请尝试patcher.exe/?或查看它的文档)。如果不行,恐怕你就卡住了。

这不起作用的原因是什么

cmd.exe patcher.exe
这不是将命令传递给cmd.exe的方式。试一试

cmd.exe /C patcher.exe

但是,这不太可能删除重复的控制台窗口。可能的情况是,
patcher.exe
被标记为Windows子系统,因此它与启动它的控制台没有关联。然后它启动作为控制台应用程序的子进程,由于没有关联的控制台,因此创建了一个新的控制台


您可以尝试使用
EDITBIN patcher.exe/SUBSYSTEM:CONSOLE
使patcher.exe也成为控制台模式程序。然后控制台将从父代传播到修补程序(子代)再传播到孙代。但是,由于程序没有以这种方式编写或测试,您可能会发现一些意外的后果。

您所说的“在启动的bat中写入”是什么意思?我的应用程序已经是控制台了。当前,如果我启动bat,将出现两个控制台(bat和我的程序)。我需要只显示一个控制台,就像我从cmd启动它一样。当您尝试
patcher.exe
时会发生什么?(没有
start
cmd
或其他内容)出现两个控制台…确定,然后应用程序本身打开另一个控制台窗口。也许应用程序中有一些参数可以抑制它(请尝试
patcher.exe/?
或查看它的文档)。说实话,这个答案更值得接受,因为editbin这个东西确实解决了我的问题。
cmd.exe /K patcher.exe