相关疑难解决方法(0)

如何从Windows命令行获取应用程序退出代码?

我正在运行一个程序,想看看它的返回代码是什么(因为它根据不同的错误返回不同的代码).

我知道在Bash中我可以通过运行来做到这一点

回声$?

在Windows上使用cmd.exe时该怎么办?

windows command-line cmd process exit-code

764
推荐指数
6
解决办法
71万
查看次数

如何在程序启动后不打开控制台的情况下从批处理文件中运行程序?

目前我的批处理文件如下所示:

myprogram.exe param1
Run Code Online (Sandbox Code Playgroud)

程序启动但DOS窗口仍然打开.我怎么能关闭它?

windows batch-file

178
推荐指数
8
解决办法
68万
查看次数

使用"cmd"和"start"命令启动应用程序的退出代码

我有一个控制台应用程序.与此应用程序的交互是通过TCP/IP完成的.

我也有一个测试框架,它基本上是BATCH脚本的集合(...不是我的错).这个测试框架对每个测试的作用基本上是这样的:

  1. start /min "myapplication.exe" 并等到收到应用程序启动并运行的验证.
  2. 通过TCP/IP向此应用程序发送命令,接收其回复,并检查时间和值是否与特定测试所期望的一致.

我目前遇到的一个问题是,由于某些内部错误,应用程序会过早退出.我想区分失败的测试和应用程序崩溃.我对此的唯一指示是应用程序的退出代码.

所以,我尝试了以下内容:

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

7
推荐指数
1
解决办法
1万
查看次数