2014-04-22 87 views
2

我有一個用C sharp(.net)編寫的控制檯應用程序,它從命令提示符處接收一些命令行參數。 現在基於應用程序的選項它將執行一些操作。 像波紋管。Exe的命令選項

> TestExe.exe Option1 (it will perform action1) 
> TestExe.exe Option2 (it will perform action2) 
> TestExe.exe Option3 (it will perform action3) 

現在我想要的是當用戶鍵入應用程序名稱並按下tab鍵比用戶應該得到的所有選項。這將使應用程序用戶友好,而不是記住選項。

任何人都可以給我一些方向..?

+1

對於哪個平臺?沒有任何跨平臺來做到這一點。 –

+0

你有沒有試過*任何*? – Crono

+0

@DarkFalcon這是Windows平臺,我使用.net框架4.0。 – Arijit

回答

0

我認爲常見的直接解決方案是添加一個支持'?'和'help'參數,所以當用戶不知道他應該爲所需的動作提供哪個參數時,他只需鍵入TestExe.exe /?或TestExe.exe /幫助並獲取列表。 一個好的做法是在用戶無需運行參數運行程序的情況下也顯示相同的圖例。

2

你所要求的是不可能的。

相反,有四個可執行文件,其中之一是您在上面描述的程序。然後,你有三個人,每一個代表三個選項之一(三個批處理文件也可以工作,並且可能更易於創建/維護)。其他三個人只需用適當的選項執行第一個。現在,既然你有四個真實文件,使用tab的命令完成將起作用 - 除了不是完成一個參數(這又不可能),外殼將自己完成命令(一個真實文件)。

+0

其實我會有更多的選項不是3或4。在不同的控制檯應用程序中分隔代碼庫並不是一個好主意。這會增加很多複雜性。但感謝您的選擇。我會檢查可行性。 – Arijit

+0

這怎麼可能?控制檯應用程序是他的,他可以讓任何他想要的東西出現在它上面。 – Crono

+0

@Chrono Windows或Linux可以完成特定於可執行文件的參數嗎? – Steve

0

你可以爲你的exe製作一個PowerShell包裝器,它將或多或少的做你想做的。

[CmdletBinding()] 
param(
    [Parameter()] 
    [ValidateSet('Option1','Option2','Option3')] 
    [string]$Option 
) 

TestExe.exe $Option 

如果保存該腳本作爲TestScript.ps1,然後在PowerShell提示符下,你可以鍵入TestScript -Option,那麼你可以按標籤要經過三個選項。

(您可以將腳本中的Option重命名爲當然任何您想要的。)