将多个参数传递给从 Windows 窗体运行的控制台应用程序

Posted

技术标签:

【中文标题】将多个参数传递给从 Windows 窗体运行的控制台应用程序【英文标题】:Passing multiple arguments to running console application from windows form 【发布时间】:2018-09-16 10:07:05 【问题描述】:

我有控制台应用程序,我们将其命名为 X.exe。它适用于两个参数让我们说 'a' 和 'a.tmp' 其中 a 是我的输入文件名a.tmp 是输出文件名。在控制台上,我通常运行如下应用程序:X a a.tmp 但首先我必须出现在输入文件“a”的位置,否则如果我试图给出其绝对路径,应用程序将无法工作。 我已经创建了 Windows 窗体来运行这些控制台应用程序,但正如我之前所说的,应用程序必须在文件位置启动。 我尝试使用进程对象,但应用程序无法正常工作。 我创建了两个进程:

    转到文件位置 在文件中执行应用程序 位置

Question: can I excute these multiple commands in one go and avoid using IPC?

【问题讨论】:

您还可以提供文件的绝对(完整路径)。 2 个进程无济于事。一个进程将更改当前工作目录,而另一个则不会。两个进程就是这样:两个进程独立于另一个进程做自己的事情。万一您的 X.exe 不支持其参数的完整绝对路径,可以通过查看 Process.Start(ProcessStartInfo)ProcessStartInfo.WorkingDirectory (docs.microsoft.com/en-gb/dotnet/api/…) 的文档轻松找到解决方案 【参考方案1】:

您可以使用ProcessStartInfo.WorkingDirectory

例如来自MS Docs - ProcessStartInfo Class

WorkingDirectory 属性在 UseShellExecutetrue 时与 UseShellExecutefalse 时的行为不同。当UseShellExecutetrue 时,WorkingDirectory 属性指定可执行文件的位置。如果WorkingDirectory 是一个空字符串,则认为当前目录包含可执行文件。

注意 - 当UseShellExecutetrue 时,启动可执行文件的应用程序的工作目录也是可执行文件的工作目录。

UseShellExecutefalse 时,WorkingDirectory 属性不用于查找可执行文件。相反,它的值适用于已启动的进程,并且仅在新进程的上下文中才有意义。

例如

    public static void Main()
    
        Process myProcess = new Process();

        try
                        
            myProcess.StartInfo.UseShellExecute = true;

            // You can start any process, HelloWorld is a do-nothing example.
            myProcess.StartInfo.FileName = "X.exe"; /
            myProcess.WorkingDirectory = "C:\SomeDirectory That contains A and A.tmp"
            myProcess.Start();
        
        catch (Exception e)
        
            Console.WriteLine(e.Message);
        
    

【讨论】:

X.exe 在任何地方都是可执行的,但输入参数不能是绝对路径。这就是为什么我首先需要在文件位置显示。假设我的驱动器不是默认的 c:\ ,它不会改变到指定位置。 那么你只需将工作目录设置为AA.exe存在的路径

以上是关于将多个参数传递给从 Windows 窗体运行的控制台应用程序的主要内容,如果未能解决你的问题,请参考以下文章

我们可以将多个参数传递给控制器​​中的函数吗?

如何将动态参数传递给 testNG.xml 运行多个测试

AngularJS:如何通过 ng-href 将多个参数传递给控制器​​?

将参数传递给从另一个控制器公开的方法

将参数传递给windows计划任务

Windows 没有将命令行参数传递给从 shell 执行的 Python 程序