繁体   English   中英

程序如何知道传递了哪些参数?

[英]How does a program know which arguments are passed?

我是编程世界的新手。

我有一个数据提取程序,可以将MySQL中的数据提取到Word模板文件中。 我不明白主程序如何知道将哪个参数传递给参数。 在运行exe时,程序如何知道"Haha, I need to pass a string in there, And it is precisely this string right here"

编辑:该程序应该在按下“提取按钮”时运行,但是exe程序如何知道字符串arg参数在哪里? exe是从哪里得到的?

主要代码

private static void Main(string[] args)
        {
            try
            {
                if (args[0] == "ALL" || args[0] == "*" || args[0] == "all")
                {
                    PrintARs();
                    Console.Read();
                }
                else
                {
                    CreateARDocument(args[0]);
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                Console.Read();
            }
        }

有多种方法:

  1. 你不知道 您只是让人们猜测,直到他们正确为止。
  2. 当提供无效输入或无输入时,作业可以向控制台写出说明以帮助用户正确执行操作
  3. 您可以提供外部文档,即readme.txt文件。
  4. 您可以使程序具有交互性,而不是使用命令行参数(写出询问您想要什么的文本,然后从标准输入中获取输入。
  5. 您可以使用该文本框和一个输入按钮为该程序制作一个真正的GUI。 通常,当您看到诸如此类的程序(使用命令行args)时,是因为它只是一个工具,并未真正做到用户友好。 它将由仅知道如何使用它的程序员使用,或者将由其他程序使用。

从您的代码中继承一些想法

如果您的应用名为app.exe

如果你跑了

app.exe 1 2 3 4 5

您将拥有args[] = { 1,2,3,4,5}并可以浏览它们

如果你跑了

app.exe /all c:\my stuff\a.txt

您会得到args[] = { /all, c:\\my, stuff\\a.txt }

您的代码将查看第一个arg,并说它是“ ALL,*或all” ..因此,笨拙的人在写“ All”时会失败..然后将以任何编写方式将arg发送给函子。

如果您从命令行执行此操作,则它将

myApp.exe "arg0" "arg1" "arg2"

static void Main(string [] args)是应用程序的入口。

args是传递给Main的参数

args.Length是您传入的参数数量

在主函数中设置一个断点

在解决方案资源管理器中右键单击您的项目->单击属性->单击调试->将abcd放入命令行参数,以调试模式运行该应用程序,并检查args的值

内部ExtractButton单击事件:

System.Diagnostics.Process.Start("PATH to your exe file", "Command Line Arguments");

命令参数的顺序与args []数组中的命令顺序相同。

这些是命令行参数

您可能已经注意到,解决方案中始终有一个Program.cs文件。 那就是您的Main()方法所在的位置。 在Windows窗体项目中,虽然可以更改它,但它不需要string []参数,然后它运行您的应用程序。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM