2014-04-22 52 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重命名为当然任何您想要的。)