Windows DOS重定向输出不工作

Windows DOS重定向输出不工作,windows,batch-file,Windows,Batch File,我在.BAT文件中调用了一个Windows程序,如下所示: .\my_prog.exe param1 如果我这样称呼它,从cmd或powershell窗口我会得到一些输出。但是,如果我将输出重定向到某个文件,它将不起作用。如果我写: .\my_prog.exe param1 >out.txt 2>&1 脚本执行结束后,out.txt为空 my_prog.exe是一个专有二进制文件,我无权访问该代码 值得一提的是,我有一个linux版本的脚本,它调用为linux编译的二进制

我在.BAT文件中调用了一个Windows程序,如下所示:

.\my_prog.exe param1
如果我这样称呼它,从cmd或powershell窗口我会得到一些输出。但是,如果我将输出重定向到某个文件,它将不起作用。如果我写:

.\my_prog.exe param1 >out.txt 2>&1
脚本执行结束后,
out.txt
为空

my_prog.exe
是一个专有二进制文件,我无权访问该代码

值得一提的是,我有一个linux版本的脚本,它调用为linux编译的二进制文件。我也有同样的问题,但我通过使用script命令设法解决了这个问题:

script -c "./my_prog.lx param1"
我找不到“脚本”的等价物,不幸的是,cygwin不是一个选项

谢谢你的帮助

编辑:

在深入研究之后,我发现当输出写入到STDOUT以外的其他源时,我的程序不会刷新缓冲区。现在,我最好的办法是欺骗我的程序,使其认为它正在向STDOUT写入,有没有一种方法可以在BAT或wurh powershell中实现这一点


谢谢

欢迎来到Stack Overflow!你能澄清一下你在问什么吗?我的问题对你来说有什么不清楚的地方?脚本是否运行并且没有产生任何输出,或者根本没有运行?它运行并且二进制文件执行它应该执行的操作,这只是我无法获得的输出(我真的很想让它),请检查linux部分,我认为这与这里的问题有关,不幸的是,我对linux比Windows更熟悉。如果我将输出重定向到某个文件,它将不起作用。除了@SomethingDark评论:请告诉我们(最好编辑您的问题):1。启动
\my_prog.exe param1
,然后将一些文本输出到命令行窗口?2.启动
\my_prog.exe param1>out.txt 2>&1
,然后输出到命令行窗口的是相同的文本还是其他文本?