对于我在 Borland C++ Builder 4.0 中创建的程序,我希望能够创建一个可以设置批处理脚本的版本。批处理 srcipt 将调用我的 .exe(不启动主窗体窗口),这将导致我的程序的主进程使用批处理文件中指定的输入执行。生成输出后,程序将关闭。
批处理脚本的前三个参数将指定三个主要输入文件(否则通过按钮加载的文件)的位置,设置一个开关以定义是针对单个案例还是多个案例进行插值(类似于 - m 或 -s)。如果前者为真,程序将读取第四种输入文件的位置。在后者的情况下,它将读取另一个 csv,该 csv 给出了这第四种输入的多个输入文件的位置。批处理文件还将定义输出位置和输出文件名。
根据到目前为止我在这里和不同论坛上所读到的内容,我认为实现这一目标的最简单方法是使用 ParamCount() 和 ParamStr(),也许还有 FindCmdLineSwitch。我究竟打算如何使用这些仍然有点模糊(我为我的无知道歉,但这不仅是我的第一个 BCB 项目,也是我第一次使用 C++ 编码和创建 Windows GUI 的真实体验)......据我了解,我可以以与此处描述的方式类似的方式使用它们http://docwiki.embarcadero.com/CodeExamples/Seattle/en/ParamCount_(C%2B%2B)。
有几件事我不知道:
- 我应该在我的程序中的哪个位置放置 ParamCount() 和 ParamStr() 部分,以检查我是否从命令行/使用批处理文件启动了 .exe?这里建议将它放在主 .cpp 文件中,该文件初始化表单http://www.borlandtalk.com/running-command-line-parameters-vt17942.html。我正在考虑这样做并从我的主要 UnitSomething.cpp 调用正确的函数。或者我应该将这些功能放在其他地方吗?
批处理文件会是什么样子?里面的参数是怎么分开的?只用空格?比如说,在我的脚本中包含新部分之后,我可以创建一个看起来像这样的批处理脚本吗?
“C:/Program Files/myprogram/myprogram.exe”“第一个输入的位置”“第二个输入的位置”-m 等。
(我之前在批处理模式下使用过 Ansys CFX,这是一个 CFD 工具,例如,它具有开关来定义哪个文件是定义文件 [-def] 和初始化文件 [-ini])。
与上述相关,开关是如何出现的?什么时候应该使用它们?例如,当我想为第一个输入定义一个位置时,它之前是否应该有一个开关,例如 -inp1?我在程序执行后在此处看到了一个示例选择表单,但我不确定这与简单的 ParamStr 有何不同?更具体地说,我如何以及何时使用 FindCmdLineSwitch?
最后,使用上述三个函数中的任何一个,我是否必须更改 WINAPI WinMain() 调用参数中的任何内容?
谢谢你。