【发布时间】:2018-06-23 18:45:58
【问题描述】:
我想知道当您可能有数百个参数时,是否有一个优雅的解决方案来构建命令行以针对 exe 启动。
我想最明显的方法是使用 if/else 语句并构建一个巨大的字符串,但它感觉并不特别优雅。以前有人解决过这个问题吗?
澄清
假设我正在编写一个启动程序 notepad.exe 的程序,该程序本身可以通过接受命令行参数进行配置。
我的程序的唯一目的是构建命令行并启动应用程序。
所以我会有一个表单,其中包含我可以在记事本中设置的所有选项。
WordWrap 的单选按钮是/否。 字体组合框 FontSize 的输入框。
当我点击“启动”按钮时,我会运行“notepad.exe -wordwrap yes -font tahoma -size 8”。
所以我的问题如下:
- 您将如何处理构建命令行的表单逻辑,您是否有一个包含每个参数的属性的类?并有一个 Build() 方法将它们全部组装起来?
- 如何将参数传递给可执行文件?
我正在寻找一个优雅的解决方案,而不是这样的:
if (chkWordWrap == true)
commandline.add("-wordwrap true")
我希望能澄清我的问题:)
【问题讨论】:
-
所以您只想知道处理命令行参数的最佳实践?
-
您是否尝试构建 CL args 的排列以用于测试目的?
-
不,不处理命令行,我想使用我的应用程序来构建命令行并启动接受这些命令的可执行文件:)。
-
一个例子对理解你想要什么很有帮助。只是将参数连接到一个字符串不需要任何 if/else,那么你到底在说什么?
-
那么表单将包含启动程序的选项,让我们以记事本为例,假设它使用命令行参数来设置它的选项,您将构建一个命令行,例如:“notepad.exe -wordwrap true -font Tahoma -size 8" 现在在我的应用程序中看到我有一个用于设置字体的下拉菜单,一个用于设置字体大小的输入框,以及一个用于设置自动换行的复选框,当我单击“运行记事本”时,它会构建命令行并执行它:捕获表单数据并将其构建到命令行中的优雅方式是什么。澄清一下,它不适用于记事本 :)
标签: c# command-line