读取命令行开关

MTe*_*eck 17 .net c#

我正在尝试在C#应用程序中读取用户参数.我知道如何根据位置阅读它们

string[] args = Environment.GetCommandLineArgs();
Run Code Online (Sandbox Code Playgroud)

但是我想从开关中读取它们

app.exe /f /d:foo
Run Code Online (Sandbox Code Playgroud)

我真的很难找到关于这样做的任何信息......

Jas*_*son 25

你为什么不解析传递的参数数组并根据它们采取行动,就像这样

foreach (string arg in args)
{
    switch (arg.Substring(0, 2).ToUpper())
    {
        case "/F":
            // process argument...
            break;
        case "/Z":
            // process arg...
            break;
        case "/D":
            paramD = arg.Substring(3);
            break;
        default:
            // do other stuff...
            break;
    }
}
Run Code Online (Sandbox Code Playgroud)


小智 6

我已经看到了几个循环遍历 args 字符串集合的答案 - 问题是您在按下要查找的开关后需要下一个项目。我使用集合的数组索引来获取下一个项目。

在我的示例中,我正在寻找服务器和端口 /S 和 /P。我希望这可以帮助别人:

        var server = string.Empty;
        var port = string.Empty;

        for(var x = 0; x < args.Count(); x++)
        {
            switch (args[x].Trim().ToUpper())
            {
                case "/S":
                    server = args[x + 1];
                    break;
                case "/P":
                    port = args[x + 1];
                    break;                                        
            }
        }
Run Code Online (Sandbox Code Playgroud)

  • 在将值设置为下一个参数后,您可能希望将 x 前进。否则,您将不必要地处理该参数: server = args[++x]; (2认同)