如何从 c# 文件中获取带有退出代码的字符串消息以提供运行它的 .bat 文件

Posted

技术标签:

【中文标题】如何从 c# 文件中获取带有退出代码的字符串消息以提供运行它的 .bat 文件【英文标题】:How get string message with exit code from c# file to provide .bat file that runs it 【发布时间】:2021-05-27 23:52:17 【问题描述】:

我正在运行这样的 c# .exe 文件:

runas /user:company\username "D:\company\Batch\dir\program.bat

这样就可以运行了

start /d "D:\company\Batch\dir" program.exe > program.txt

我正在尝试让错误信息显示在 program.txt 中。

我一直在查看 c# 的退出代码,但看起来我无法提供具体的错误信息。 error codes。有谁知道我如何从 c# 程序中提供错误代码特定的错误信息?就像我可以给出 TimeoutException、Exception、CommunicationException、服务响应错误消息/代码、数据库连接失败等。当我知道有关失败的信息时,我不想提供一般性的失败。

【问题讨论】:

在上面的设置中,似乎 C# 程序中 Console.WriteLine() 的任何输出都应该以 program.txt 结尾 - 你试过了吗? 是的,现在我确实有一些 Console>Writelines 在失败区域,但文本文件是空的。我不确定是不是因为当我们运行程序时,会弹出一个辅助窗口,运行完成后会消失? 只是一个快速重定向尝试 - 在批处理文件中,尝试添加重定向如下: start /d "D:\company\Batch\dir" program.exe > program.txt 2>&1 我试过了,文本文件还是空的。我们尝试打开以用户名登录的命令窗口,然后在没有 runas(也没有重定向)的情况下运行 .bat 文件,并且错误消息出现在输出中 【参考方案1】:

看起来console.writeline的在命令窗口中显示如下。

我们打开一个单独的 windows 命令窗口,并像这样运行它: (其中命令窗口以其他用户身份登录)

C:\Users\stillShowsOriginalUsernameHere>D:\company\Batch\dir\program.exe

然后它会在命令窗口中显示错误消息。因此,当我使用调度程序对其进行调度时,它会将输出捕获为错误信息。

【讨论】:

以上是关于如何从 c# 文件中获取带有退出代码的字符串消息以提供运行它的 .bat 文件的主要内容,如果未能解决你的问题,请参考以下文章

创建 C# 代码以从 json 文件中获取值

从 C# 调用带有 C++ 标头的 dll

C#获取带有路径的数组的文件大小

C#按钮click事件是如何触发的

如何从 C# 中的 powershell 脚本中捕获退出代码

如何使用 C# 中的 Azure.Storage.Blobs 从 Azure 存储 Blob 以 ByteArray 格式获取文件