C#将带有标志(/ arg1 / arg2)的参数传递给exe

问题描述 投票:-2回答:1

我可以使用一些帮助来确定如何将多个参数传递给我的可执行文件。我需要能够运行如下的可执行类型:myproject.exe -project ProjectName -jobs job1,job2

到目前为止,我的可执行文件设计用于运行另一个需要项目名称和单个作业名称的可执行文件,因此我的可执行文件将遍历给定的作业,以便为每个提供的作业名称运行其他可执行文件。然后,我将根据给定的每个作业的其他可执行文件的输出执行其他操作。例如,它列出了作业的状态,如果给定的任何作业未处于运行状态,我将使我的可执行文件在提供的作业名称中启动第一个作业。我可以将参数传递给我的可执行文件,但我不知道如何将作业名称与第一个参数分开。这是我到目前为止所拥有的。

using System;
using System.Text;
using System.IO;
using System.Diagnostics;

public class Functions
{
        public static void runCommand(string executable, string execArguments)
    {
        Process process = new Process();
        process.StartInfo.FileName = executable;
        process.StartInfo.Arguments = execArguments; // Note the /c command (*)
        process.StartInfo.UseShellExecute = false;
        process.StartInfo.RedirectStandardOutput = true;
        process.StartInfo.RedirectStandardError = true;
        process.Start();
        //* Read the output (or the error)
        string output = process.StandardOutput.ReadToEnd();
        Console.WriteLine(output);
        string err = process.StandardError.ReadToEnd();
        Console.WriteLine(err);
        process.WaitForExit();
    }
}

class MainClass
{
    static int Main(string[] args)
    {
        // Test if input arguments were supplied:
        if (args.Length == 0)
        {
            System.Console.WriteLine("Please enter a project and job name");
            System.Console.WriteLine("Usage: DSJobStatusMonitor <projectName>  <JobName1,JobName2>");
        }
    }
}
c# arguments parameter-passing
1个回答
0
投票

如果将命令行参数更改为

<projectName> <Jobname1> [<Jobname2> [...]]

然后,您可以遍历作业:

string projectname = args[0];
for(int i=1; i<args.Length; i++)
{
    string job = args[i];
    // do something with the job
}

如果您希望将命令行参数保持为

<projectName> <Jobname1,Jobname2>

然后你需要在逗号分开并循环工作:

string projectname = args[0];
var jobs = args[1].Split(',');
foreach(var job in jobs)
{
    // do something with the job
}
© www.soinside.com 2019 - 2024. All rights reserved.