我通过批处理文件调用C#控制台应用程序,以便将应用程序输出发送到文本文件,包含日期/时间等 .
我遇到的问题是,当控制台应用程序完成时,它会打开批处理窗口,因为有一个PAUSE(等效的C#),因此必须按一个键才能关闭窗口 . 这意味着我不知道工作什么时候结束 .
有没有办法在应用程序完成后关闭CMD窗口,而不必更改C#应用程序代码?
@ECHO================================================================================
@ECHO The Application is currently running and may take some time. Please wait...
@ECHO================================================================================
@ECHO OFF
C:\Applications\Job\Job.exe > C:\Applications\Job\Job_Output\"Output_%date:/=-% %time::=-%.txt"
4 回答
试试这个(注意
echo
之后的整理点):我试过
pause
并且效果很好:echo.
不是echo
. 它只是打印一个换行符,就是触发暂停所需的内容 .如果您的控制台应用程序已经有一个
Console.ReadLine()
或Console.ReadKey()
方法,而不是仅仅调用*.exe
,而不是仅使用Start命令,它将在单独的窗口中运行可执行文件如果您无法访问控制台应用程序源代码,则可以尝试解决方法
所以,
在同一cmd窗口中启动job.exe可执行文件 .
等待logfile关闭,因此它可能表示上一个进程已经结束 .
将回车键发送到控制台,等待按键的过程可以捕获它 .
我们必须在这里模拟按键,因此我们应该使用键盘缓冲区 .
我不是批处理专家,这是我找到的搜索如何按批次按键的答案:
资源:
Press Keyboard keys using a batch file
GnuWin32 openssl s_client conn to WebSphere MQ server not closing at EOF, hangs