我正在运行一个程序,想看看它的返回代码是什么(因为它根据不同的错误返回不同的代码).
我知道在Bash中我可以通过运行来做到这一点
回声$?
在Windows上使用cmd.exe时该怎么办?
目前我的批处理文件如下所示:
myprogram.exe param1
Run Code Online (Sandbox Code Playgroud)
程序启动但DOS窗口仍然打开.我怎么能关闭它?
我有一个控制台应用程序.与此应用程序的交互是通过TCP/IP完成的.
我也有一个测试框架,它基本上是BATCH脚本的集合(...不是我的错).这个测试框架对每个测试的作用基本上是这样的:
start /min "myapplication.exe" 并等到收到应用程序启动并运行的验证.我目前遇到的一个问题是,由于某些内部错误,应用程序会过早退出.我想区分失败的测试和应用程序崩溃.我对此的唯一指示是应用程序的退出代码.
所以,我尝试了以下内容:
start /min cmd /c "myapplication.exe || echo %errorLevel% > exitcode.txt"
然后在测试脚本中,
if exist exitcode.txt (
set /p exitcode=<exitcode.txt
echo ERROR: myapplication.exe returned exitcode %exitcode%.
goto error
) else (
goto do_processing
)
Run Code Online (Sandbox Code Playgroud)
但由于一些奇怪的原因,文本文件永远不会出现,即使我有时会得到关于应用程序崩溃的对话框,即使我强行使用已知的非零退出代码使其失败.测试刚刚结束do_processing,(当然)导致失败.
编辑 当我跑
start /min cmd /c "nonsense || echo %errorLevel% > test.txt"
我有时会得到一个包含字符串9009的文本文件,但有时候该文本文件包含字符串0,或者有时候1,......有什么......?!
EDIT2 如果输入
cmd /k "nonsense || echo %errorLevel%"
(注意/k选项),你看到0在新窗口中打印,但如果你打字echo %errorlevel%,你得到1 …
windows batch-file command-prompt exit-code console-application