【问题标题】:How to get command line parameters and put them into variables? [duplicate]如何获取命令行参数并将其放入变量中? [复制]
【发布时间】:2023-02-18 12:43:42
【问题描述】:

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

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

感谢您的帮助!

编辑:

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

【问题讨论】:

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

标签: 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】:

考虑使用库为您完成所有这些解析。我在 Github 上使用命令行解析器库取得了成功:

https://github.com/commandlineparser/commandline

您可以使用 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 数组中找到'

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 这是一个大批它们已经是单独的字符串。如何将这些信息添加到表单中很大程度上取决于您。
  • 你如何将这些东西放入变量/字符串中?
  • 字符串 someValue = args[i];
  • @MihailMojsoski String title = args[0]; 如果您对此有困难...请找一本好的 C# 书籍并阅读第一章左右。那里会更好地介绍变量分配。
猜你喜欢
  • 1970-01-01
  • 2019-06-20
  • 2015-07-15
  • 2015-11-17
  • 1970-01-01
  • 1970-01-01
  • 2011-12-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多