运行批处理文件 - CPLEX Interactive Optimizer

时间:2018-06-05 19:12:19

标签: batch-file cplex

我正在尝试在CPLEX Interactive Optimizer中运行批量.sav个文件。 IBM提供了一些文档here。但是,我面临一些问题:

  1. 启动CPLEX Interactive Optimizer后,将我的批处理文件(batch_trial.bat)从其位置(C:\Users\myname\folder name\)拖放到CPLEX命令提示符中(即,当我点击时)在CPLEX>C:\Users\myname\folder name\batch_trial.bat之后输入,我收到Command '"C:\Users\myname\folder' does not exist. Type 'help' for a list of commands.我从某些论坛了解到的错误,这是因为folder name中的'空格',但是,这些论坛中的答案说使用了双引号会解决这个问题。但我使用双引号,我仍然看到错误。
  2. 我尝试将批处理文件内容直接输入CPLEX提示符,如下所示(这是batch_trial.bat的内容,如IBM的文档所示):

    CPLEX> @echo off
    for /L %%i in (1,1,2) do (
    move mytest%i.sav mytest.sav
    cplex < mycplexcommands
    move cplex.log mytest%i.log
    )
    

    这也不起作用:对于@echoformovecplex中的每一个,我都会收到类似的错误,说这些命令不存在。我在mytest1.sav中有两个mytest2.savmycplexcommands.txtC:\Users\myname\folder name\mycplexcommands.txt的内容是:

    read mytest.sav
    optimize
    display solution variables 1-10
    quit
    
  3. 如果.sav文件的名称不相同,该怎么办?例如,如果文件名是apg.savhfb.sav,我如何才能通过批处理文件中的for循环执行这些文件?

  4. 谢谢!

2 个答案:

答案 0 :(得分:1)

如果您从.bat文件运行代码,请在%%i循环声明和其余代码中使用FOR

move "mytest%%i.sav" "mytest.sav"

如果您直接在shell中运行代码块,请在声明和代码中使用%i

答案 1 :(得分:1)

听起来您对批处理文件(具有.bat扩展名的文件)与CPLEX interactive使用的命令文件之间的区别感到困惑。可以从Windows command shell运行批处理文件。使用重定向运算符(如示例中的<)或-f选项时,交互操作可以运行CPLEX命令文件。例如,可以使用-f选项,如下所示:

cplex.exe -f mycplexcommands.txt

对于(1)和(2),由于您尝试从CPLEX交互式内部运行批处理脚本,因此无法正常工作。如果您将mycplexcommands.txt文件拖到CPLEX交互式中,可能会有效。

对于(3),请参阅How to do a for loop in windows command line?处的stackoverflow线程。也就是说,它应该从(这尚未经过测试)开始:

FOR %%i IN (*.sav) DO

最后,您可能有兴趣查看developerWorks上的Open LP files in CPLEX interactive文章。