我正在尝试运行批处理的.sav
文件在CPLEX交互式优化器。提供了一些文档here。然而,我面临着几个问题:
batch_trial.bat
)从它的位置(C:\Users\myname\folder name\
)到CPLEX
命令提示符下(也就是说,当我在CPLEX>C:\Users\myname\folder name\batch_trial.bat
之后按enter键时,我得到了错误的Command '"C:\Users\myname\folder' does not exist. Type 'help' for a list of commands.
我从一些论坛理解这是由于folder name
中的“空格”,但是,这些论坛中的答案说使用双引号可以解决这个问题。batch_trial.bat
的内容,正如IBM的文档所建议的那样):(1,1,2) do中/L %%i的CPLEX> @echo off ( move mytest%i.sav mytest.sav cplex < move命令move cplex.log mytest%i.log )
这也不起作用:对于@echo
、for
、move
、cplex
中的每一个,我都会收到类似的错误,指出这些命令不存在。我在C:\Users\myname\folder name\
中有两个mytest1.sav
、mytest2.sav
和mycplexcommands.txt
。mycplexcommands.txt
的内容是:
阅读mytest.sav优化显示解决方案变量1-10退出
.sav
文件没有类似的名称怎么办?例如,如果文件名为apg.sav
和hfb.sav
,如何仍然让批处理文件中的For循环执行这两个文件?谢谢!
发布于 2018-06-06 04:07:06
如果从.bat
文件运行代码,请在FOR
循环的声明和代码的其余部分中使用%%i
。
move "mytest%%i.sav" "mytest.sav"
如果直接在shell
中运行代码块,则在声明和代码中使用%i
。
发布于 2018-06-06 05:01:21
听起来您对批处理文件(扩展名为.bat
的文件)和CPLEX interactive使用的命令文件之间的区别感到困惑。可以从Windows command shell运行批处理文件。当使用重定向操作符(如您的示例中的<
)或-f
选项时,can命令文件可以由交互式运行。例如,可以使用-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文章感兴趣。
https://stackoverflow.com/questions/50707372
复制相似问题