matlab中的system()函数无法识别参数文件名

时间:2012-07-11 00:26:00

标签: matlab arguments system parameter-passing executable

我有一个可执行文件,在运行时会询问参数文件的名称。我已经尝试了所有输入参数文件名称的样式,但我得到了同样的错误:

GAM Version: 2.905 

ERROR - the parameter file does not exist, 
        check for the file and try again   

Stop - Program terminated. 


ans =

     0

参数文件的名称为gam.par。我为该函数尝试自动读取参数文件名称的各种样式是:

system('"gam.exe" -f "gam.par"')

system('"gam.exe" -f "gam.par"')

system('"gam.exe" -f gam.par')

system('gam.exe -f gam.par')

system('"gam.exe" /f gam.par')

system('"gam.exe" /f gam.par /o gam.out')

system('"C:\Users\...\gam.exe" /f gam.par /o gam.out')

system(['"C:\Users\...\gam.exe" /f gam.par /o gam.out'])

其中gam.pargam.par分别是参数(输入)文件和输出文件。但是,在上述每种情况下,我都会收到与开头所示相同的错误消息。

我的所有文件(输入,输出,可执行文件等)都在同一个文件夹中。如果我使用system()函数而不使用参数文件的名称,那么它运行没有错误并提示我输入参数文件名,当我在提示符下输入相同的文件名(即gam.par)时,一切正常。我希望能够通过在system()参数内输入参数文件名而不是在提示符下手动输入来自动执行此操作。如果有人能够确定为什么我无法得到我想要做的事情将会有所帮助。谢谢!

3 个答案:

答案 0 :(得分:2)

根据Mathworks的this page,语法为:

system('filename parameter1 parameter2...parameterN')

或在你的情况下:

system('gam.exe gam.par') 

注意整个参数的单引号以及传递给可执行应用程序的每个参数之间的空格。还有完整的product documentation,但我发现它不如我之前的链接那么明确。

答案 1 :(得分:2)

这是一个例子。想象一下,您有一个文本文件:C:\filename.txt

system('type c:\filename.txt')

现在,如果文件的名称(或其路径)中有空格,则需要使用双引号:

system('type "c:\my filename.txt"')

答案 2 :(得分:0)

  

在控制台中运行程序:\\location\My programm.exe 'param 1' 'param 2'

     

在Matlab中运行程序:system(['location\my proramm.exe' '"param 1"' '"param 2')

pathApplicationForm = strcat('"C:\Users\Master\Google Drive\Bakalaura Darbs\Application Development for the Microscopic Models Calibration\Application Form\bin\Debug\Application Form.exe"');
runParam = strcat(get(vEdit2,'String'), '\', get(vEdit3,'String'));
VISSIM = strcat(get(vEdit1,'String'));
system([pathApplicationForm ' "' VISSIM '" "' runParam '']);

它正在工作^^