【问题标题】:Custom CMD Commands自定义 CMD 命令
【发布时间】:2014-04-06 09:10:31
【问题描述】:

是否可以为使用 Visual Studio C# 编写和编译的应用程序创建自定义命令提示符参数。我希望我的应用程序的用户能够通过命令行在其中执行操作。

例如,如果用户键入 CMD application_name.exe -parameter 来执行分配给 parameter 的代码。

【问题讨论】:

  • 当然有内置的方法可以做到这一点,但我喜欢使用docopt.net。它在 nuget 中可用。

标签: c# command-line-arguments


【解决方案1】:

是的,这就是string[] argsProgram.cs 中的用途。

确保您拥有所需一切的最简单方法是从 Visual Studio 中的控制台应用程序模板创建您的应用程序。

为此:

  1. 转到文件 -> 新建项目...
  2. 从可用模板列表中选择Console Application
  3. 为您的解决方案命名
  4. 点击 OK 完成创建项目

这将确保您拥有所需的所有引用,并且正确设置了 Program.cs 类。

这是一个伪示例,说明您可以在程序的 Main 方法中执行哪些操作,以便在命令行中接受参数:

static void Main(string[] args)
{
    if (args.Length <= 0) //Checking the Length helps avoid NullReferenceException at args[0]
    {
        //Default behavior of your program without parameters
    }
    else
    {
        if (args[0] == "/?")
        {
            //Show Help Manual
        }
        if (args[0] == "/d")
        {
            //Do something else
        }
        //etc
    }
}

然后在命令提示符下,用户可以键入:

yourProgamName.exe /?
yourProgramName.exe /d

正如已删除的答案中所述,这里有一个很棒的库来处理复杂的命令行选项:

NDesk Options

【讨论】:

  • 您可能需要检查是否至少传入了一个 arg。也许将第一个 if 语句更改为 if(args.Length == 0 || args[0] == "/?") 以便在您执行 /? 或不使用任何参数时显示帮助全部。
  • 如果您想要更好/更轻松地支持参数和参数解析,请查看 NDesk 选项 - ndesk.org/Options
  • @Lloyd 是的,我知道,但我想我会把这个作为一个简单的例子,因为 OP 似乎是一个初学者。
  • 这就是我要寻找的。提前致谢。
  • +1。请注意,您最好从“控制台应用程序”模板开始,以使所有工作正常。
【解决方案2】:

这就是您的 main 方法中的“args”参数的用途。

如果您的用户运行“application_name.exe -parameter”,那么 args[0] 将是“-parameter”。您可以使用它来将您的应用程序分支到正确的代码。

查看this question,查看处理大量命令行参数/参数的示例和优秀库。

【讨论】:

    【解决方案3】:

    如果由于某种原因您无法访问您的main(),您可以从Environment.CommandLine 获取您的命令行。

    【讨论】:

      猜你喜欢
      • 2022-11-27
      • 2018-12-15
      • 2021-04-07
      • 2014-03-17
      • 2010-12-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多