Con*_*ell 11 c# command-line console-application command-line-arguments
当从命令行读取参数/标志时,是否使用正斜杠(/)或连字符( - )的任何约定(无论是书面的还是通常理解的)?
C:\> myprogram.exe -a
C:\> myprogram.exe /a
Run Code Online (Sandbox Code Playgroud)
根据我的经验,这两个似乎是可以互换的,但是我没有使用足够的命令行工具来说我发现了任何规则或模式.
他们中的任何一个都被使用了吗?如果我愿意,理论上我可以使用星号(*)吗?
ken*_*ken 11
您可以(理论上)使用您想要的任何内容,因为参数只是传递给命令行程序的字符串.
Windows约定似乎更喜欢使用正斜杠ipconfig /all,但有一些需要连字符的程序gacutil -i,甚至是排序的环境变量语法setup SKUUPGRADE=1.
*Nix约定似乎更喜欢-v单字母参数的连字符,以及--verbose多字母参数的双连字符.
我倾向于使用连字符,因为它们更多与操作系统无关(正斜杠是某些操作系统中的路径分隔符),并且在更现代的Windows应用程序中使用(例如,nuget).
编辑:
这将是推荐一个执行.NET命令行参数解析的库的好地方:http://commandline.codeplex.com/
另请参阅命令行选项样式-POSIX或什么?。
DOS和Windows中的传统是使用正斜杠,如/a或中的/extend。使用的传统-a来自Unix(可能还有其他地方)。
有一个GNU标准,其中单个破折号用于一个字母标志,例如-e -d,并且可以将它们合并为-ed(因此-ed等效于-e -d)。然后,多字母开关需要两个破折号,如中所示--extend --display。有时只需要写足够多的单词就可以推断出开关的含义,因此例如--disp,--display如果没有其他开关以字母开头,则可能是一个短记号disp...。
旧的 DOS 命令使用前缀 / 作为可选参数。Microsoft 现在正致力于支持 Posix 使用 - 来表示其 PowerShell 命令行标准文档中记录的参数。这是因为他们的操作系统现在将 \ 和 / 视为目录分隔符。
https://technet.microsoft.com/en-us/library/ee156811.aspx
| 归档时间: |
|
| 查看次数: |
3464 次 |
| 最近记录: |