在不使用GUI的情况下控制.exe的脚本? (未知API)

时间:2019-03-04 11:00:39

标签: windows scripting

我正在寻找一种运行.exe文件并通过连接到其API进行控制的方法。该程序是Solibri IFC Optimizer(link),据我发现,目前尚未发布有关该API的文档。仍然可以在不使用GUI的情况下控制程序?

我的目标是创建一个执行以下操作的脚本(.bat或类似文件):

  1. 启动程序(Solibri IFC Optimizer)
  2. 打开文件(从硬编码的文件夹路径)
  3. 运行过程(优化IFC文件,不使用zip打包)
  4. 保存文件(至硬编码的文件夹路径)
  5. 退出

该脚本将被安排并自动运行。

我已经在Stack Overflow中搜索了类似的主题,但是找不到任何相关的匹配项。我是新手,但是了解一些基本的编程。这可能是愚蠢的问题,但如果您能向我指出正确的方向,我将不胜感激。

2 个答案:

答案 0 :(得分:1)

感谢您的快速回复!实际上,我确实接触了一些有关如何通过挂接到其API来控制和自动化“ Solibri IFC Optimizer”的文档。据我所知,该文档尚未在互联网上的某个地方发布,所以我想分享一下。这是从Windows命令提示符或使用.bat文件控制程序的方法:

Solibri IFC Optimizer for Command Line Tool

示例:

      c:\Program Files\Solibri\IFCOptimizer>"Solibri IFC Optimizer.exe" -in=d:\temp\model.ifc -out=d:\temp\model_optimized.ifc

用法:

      "Solibri IFC Optimizer.exe" [-license] [-help] [ [-rounding] [-force] -in=dir|file1[;file2;file3;...] [-out=[file|dir [-ifczip|-ifc] [-suffix=_optimized] ]]]

说明:

      Solibri IFC Optimizer is used for optimizing Open Standard IFC files. 
       Optimization is lossless and compression is approximately 5-10%.

参数列表:

       -license   : Print license on screen and ignores other options.

       -help      : Prints this help message and ignores other options.

       -rounding  : Use floating point rounding.

       -force     : Force to overwrite existing compressed file(s) 
                    * Default action is to ask for confirmation.

       -in        : Source folder (optimizes ifc files from the folder)
                    or file(s) (separated by ';').

       -out       : Destination file or folder for compressed file(s).
                    * If destination is a file then -ifczip -ifc & -suffix are ignored.

       -ifczip    : Forces output file(s) to be compressed .ifczip file(s)
       -ifc       : Forces output file(s) to be uncompressed .ifc file(s)
                    By default output file(s) will be compressed .zip file(s).
                    * Last specified option will be used.

       -suffix    : Suffix to be added to compressed file(s) 
                    * Default suffix is "_optimized".

答案 1 :(得分:0)

在收到上面发布的文档后,我设法完成了脚本,但从未在此处发布过。我会将解决方案发布给其他人查找和使用:

var filtredExercises = uRecordFields
                         .Where(f => f.Values.Any( v => v.DaysOfWeek.count = 1 && v.DaysOfWeek.FirstOrDefault() == dayofweek))
                         .ToList();