【问题标题】:How to get command line parameters and put them into variables? [duplicate]如何获取命令行参数并将它们放入变量中? [复制]
【发布时间】:2014-07-09 18:16:56
【问题描述】:

我正在尝试申请。有人可以帮我如何获取命令行参数并将它们放入变量/字符串中。我需要在C#上做这个,它必须是5个参数。

第一个参数需要放入Title变量中。 第二个参数需要放入 Line1 变量中。 第三个参数需要放入 Line2 变量中。 第四个参数需要放入 Line3 变量中。 而第五个参数需要放入Line4变量中。

感谢您的帮助!

编辑:

我需要将此添加到 Windows 窗体应用程序中。

【问题讨论】:

  • Uhhh... 在 main 中使用 args 数组并使用变量赋值?您并没有认真询问如何进行变量赋值是吗?我还从您的标题中删除了标签,请它们只是标签。
  • 菜鸟就好,不做研究;没那么多。 MSDN 和 SO 都有大量这方面的信息。
  • Winforms 并没有真的 改变问题,只是让它变得更加痛苦。唯一的方法是从 main 中读取参数(是的,它仍然存在)并通过构造函数或其他机制将其传递给您的表单。当然,你如何做这件作品取决于你。

标签: c# variables parameters


【解决方案1】:

您可以通过以下两种方式之一进行操作。

第一种方法是使用string[] args 并将其从Main 传递给您的Form,如下所示:

// Program.cs
namespace MyNamespace
{
    static class Program
    {
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main(string[] args)
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new MyForm(args));
        }
    }
}

然后在MyForm.cs 中执行以下操作:

// MyForm.cs
namespace MyNamespace
{
    public partial class MyForm : Form
    {
        string Title, Line1, Line2, Line3, Line4;
        public MyForm(string[] args)
        {
            if (args.Length == 5)
            {
                Title = args[0];
                Line1 = args[1];
                Line2 = args[2];
                Line3 = args[3];
                Line4 = args[4];
            }
        }
    }
}

另一种方式是使用Environment.GetCommandLineArgs(),像这样:

// MyForm.cs
namespace MyNamespace
{
    public partial class MyForm : Form
    {
        string Title, Line1, Line2, Line3, Line4;
        public MyForm()
        {
            string[] args = Environment.GetCommandLineArgs();
            if (args.Length == 6)
            {
                // note that args[0] is the path of the executable
                Title = args[1];
                Line1 = args[2];
                Line2 = args[3];
                Line3 = args[4];
                Line4 = args[5];
            }
        }
    }
}

你会留下Program.cs原来的样子,没有string[] args

【讨论】:

  • @Mihail 假设您使用了我的第一个解决方案,在Program.cs 中,您需要具有以下行:Application.Run(new MyForm(args));。请注意,您必须在其中有args
【解决方案2】:

考虑使用库为您完成所有这些解析。我已经成功使用 CodePlex 上的命令行解析器库:

http://commandline.codeplex.com/

您可以使用 Nuget 获取此库:

Install-Package CommandLineParser

这是一个示例用法:

// Define a class to receive parsed values
class Options
{
    [Option('r', "read", Required = true, HelpText = "Input file to be processed.")]
    public string InputFile { get; set; }

    [Option('v', "verbose", DefaultValue = true, HelpText = "Prints all messages to standard output.")]
    public bool Verbose { get; set; }

    [ParserState]
    public IParserState LastParserState { get; set; }

    [HelpOption]
    public string GetUsage() {
    return HelpText.AutoBuild(this, (HelpText current) => HelpText.DefaultParsingErrorsHandler(this, current));
    }
}

// Consume them
static void Main(string[] args)
{
    var options = new Options();

    if (CommandLine.Parser.Default.ParseArguments(args, options))
    {
        // Values are available here
        if (options.Verbose) Console.WriteLine("Filename: {0}", options.InputFile);
    }
}

【讨论】:

  • 提供的示例。这是处理命令行参数的可靠方法;不知道为什么这被否决了。
【解决方案3】:

命令行 args 在 args 数组中找到'

public static void Main(string[] args)
   {
       // The Length property is used to obtain the length of the array. 
       // Notice that Length is a read-only property:
       Console.WriteLine("Number of command line parameters = {0}",
          args.Length);
       for(int i = 0; i < args.Length; i++)
       {
           Console.WriteLine("Arg[{0}] = [{1}]", i, args[i]);
       }
   }

来源http://msdn.microsoft.com/en-us/library/aa288457(v=vs.71).aspx

【讨论】:

  • 如何将参数添加到单独的字符串中以及如何在 Windows 窗体应用程序中添加它?
  • @MihailMojsoski 它是一个 array 它们已经是单独的字符串。如何在表单中获取这些信息很大程度上取决于您。
  • 如何将这些东西放入变量/字符串中?
  • 字符串 someValue = args[i];
  • @MihailMojsoski String title = args[0]; 如果您对此有疑问...请找一本不错的 C# 书籍并阅读第一章左右。那里将更好地介绍变量赋值。
猜你喜欢
  • 2023-02-18
  • 1970-01-01
  • 1970-01-01
  • 2014-05-09
  • 2015-08-05
  • 2019-03-25
  • 1970-01-01
  • 2023-03-24
  • 1970-01-01
相关资源
最近更新 更多