想写一个功能强大点的控制台程序,知道Main方法中的string[] args是向控制台传递的参数。
请问如何来判定读取这些参数呢?看过一些其他的控制台参数,比如dir /p /w也可以写为dir /p/w,也可以使用管道dir|sort而XCOPY的参数要复杂一些,包括读取路径的判定。
xcopy Source [Destination] [/w] [/p] [/c] [/v] [/q] [/f] [/l] [/g] [/d[:mm-dd-yyyy]] [/u] [/i] [/s [/e]] [/t] [/k] [/r] [/h] [{/a|/m}] [/n] [/o] [/x] [/exclude:file1[+[file2]][+[file3]] [{/y|/-y}] [/z]而且最后的参数也不能提到前面。至于mencoder和rar的参数似乎更复杂一点。
想问一下,如果对于这种大量的参数,包括了开关,路径之类的选择,应该怎样加入判定呢?一个个foreach和switch-case在参数很多的时候似乎太麻烦了。
比如mencoder在编码流媒体的时候,参数有一个-rate 15来决定帧率,这一类的参数怎么控制?

解决方案 »

  1.   

    看了一下mencoder,那个帧率中间是用=连接的,不是空格……
    这样一来只剩下判定这些参数了……
      

  2.   

    自顶一下。
    我自己大致的思路,把这args用foreach遍历,然后每个都用switch-case,但是这样做是有问题的。
    如同方法的重载,有些参数是可有可无的,参数的格式各不相同,如/和-等等,甚至有的/和-意思一样(xcopy中的/y和-y一个意思)。
    总之,好麻烦,想不出来下面怎么写。真有大量参数的话,光switch-case估计都能占一个版面了
      

  3.   


    没有什么捷径,写时候慢慢添加进去。
    至于/和-,在foreach时可以先处理掉这个字符,将后面的字母等用switch。或者只支持其中一种。