2014-03-04 222 views
2

是否可以爲在Visual Studio C#中編寫和編譯的應用程序創建自定義命令提示符參數。我希望我的應用程序用戶只需通過命令行就可以在其中執行任何操作。自定義CMD命令

例如,如果用戶鍵入CMD application_name.exe -parameter來執行分配給parameter的代碼。

+0

當然有內置的方法可以做到這一點,但我喜歡使用[docopt.net](https://github.com/docopt/docopt.net)。它在nuget中可用。 –

回答

6

是的,這就是string[] args是在Program.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

+1

您可能希望進行一些檢查,以確保至少有一個參數傳入。也許將第一個if語句更改爲if(args.Length == 0 || args [0] ==「/?」),以便顯示如果你使用'/?'或者根本不使用參數。 –

+0

如果你想更好/更容易支持參數和參數解析檢查NDesk選項 - http://www.ndesk.org/Options – Lloyd

+0

@Lloyd是的,我知道,但認爲我會保持這個簡單的例子,因爲OP似乎成爲初學者。 –

0

這就是你的主要方法中的「args」參數。

如果用戶運行 「application_name.exe -parameter」 然後ARGS [0]將是 「-parameter」。您可以使用它將您的應用程序分支到正確的代碼。

退房this question看到實例和良好的庫來處理大量的命令行參數/參數。

0

如果您因爲某些原因無法訪問您main(),則可以從Environment.CommandLine獲取命令行。