【问题标题】:Running .Net application from command prompt window从命令提示符窗口运行 .Net 应用程序
【发布时间】:2014-05-15 14:53:47
【问题描述】:

我有一个 .Net windows C# 应用程序,相当完整且工作正常,有人要求我支持从另一个程序(如 LabView)调用它。我添加了在启动时解析命令行参数的功能,因此我可以检测到它应该像控制台应用程序一样运行,并提供足够的信息来运行。

我想做的是让程序将其结果打印到控制台并让调用程序对其进行管道传输,或者只是提取数据并使用它。

打印到控制台工作正常,但是当我启动程序时,它告诉命令提示符窗口它已完成(一个新的提示符立即出现并且命令提示符正在等待输入)。在此过程中,它还会关闭作为启动行的一部分的重定向。有没有办法阻止它在实际完成之前告诉调用程序它已经完成?

简单的解决方案是传递一个文件来保存数据,但我不希望这样做。我也可以做一个单独的版本,它是一个控制台应用程序,但这意味着支持两个单独的程序。

谢谢

【问题讨论】:

    标签: c# windows windows-7 command-prompt


    【解决方案1】:

    您可以使用cmd /c myapp.exe,而不是直接调用程序。

    【讨论】:

    • cmd 选项不喜欢遍历 windows 目录来查找命令。即使正确引用,它也会在目录名称中的第一个空格(空格)处停止。
    • @user3641293 我认为情况并非如此。 cmd /c "c:\Program Files (x86)\my app\my app.exe" 工作。
    • 如果我删除所有空格,它会找到它。我试过 cmd /c "C:\Program Files (x86)\ ... " 它抱怨 c:\Program 不是可执行文件。我在 Windows 7 上运行 x86 命令提示符。积极的一面是, cmd /c 确实等待程序完成,这是朝着正确方向迈出的重要一步。
    • 参数中有不止一组引号...第二组用于引用输入文件的文件路径,这会导致 cmd 剥离第一组...如果我在它起作用的所有东西周围加上第二组引号。现在,如果我可以让重定向工作,我会很好。
    猜你喜欢
    • 1970-01-01
    • 2011-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多