簡體   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