How to call a command prompt variable when executing operating system command from Matlab

7 visualizaciones (últimos 30 días)
Dear all,
I am trying to call a command prompt variable from within a operating system command using Matlab. An example of what I want to run using the command prompt:
set expr=$1=179*($1*0.265+$2*0.670+$3*0.065) & echo %expr%
Gets me the output I would like:
$1=179*($1*0.265+$2*0.670+$3*0.065)
When I try to run this from Matlab, using the following script:
cmd = 'set expr=$1=179*($1*0.265+$2*0.670+$3*0.065) & echo %expr%'
[status,cmdout] = system(cmd)
I get the following output:
cmdout =
'%expr%
'
Which suggests that matlab surrounds the %expr% in quotations before it sends the command to the command prompt.
The reason I am trying to do all this is because I want to use the string in expr as an input argument of a Radiance program which was written for Unix. The only way which I found I could do this on a Windows system is by first defining a variable containing the expression as a string and then calling this string from within the Radiance command argument.
I hope someone could shed some light on how I could solve this.
Kind regards,
Samuel
  3 comentarios
Looky
Looky el 25 de Sept. de 2017
Editada: Looky el 25 de Sept. de 2017
Answering your main question. The reason that your code isn't working is that your set command executes, but the echo command doesn't see the new variable yet. This happens when commands are seperated by & and the time between setting and using the new variable is not long enough. You can get around this by using the cmd with the /V parameter like this (Windows only):
cmd='cmd /V:ON /c "set expr=179*($1*0.265+$2*0.670+$3*0.065) & echo %expr%"';
[status,cmdout] = system(cmd);
or use the setenv function of matlab to seperate setting and echoing of the variable.
Samuel de Vries
Samuel de Vries el 25 de Sept. de 2017
Thanks Looky!!
That indeed solved my problem. I wasn't aware of the fact that by default variables are only expanded once every line in the command prompt.
Kind regards,
Samuel

Iniciar sesión para comentar.

Respuesta aceptada

Samuel de Vries
Samuel de Vries el 18 de Dic. de 2017
Question answered by Looky in the comments.

Más respuestas (0)

Categorías

Más información sobre Startup and Shutdown en Help Center y File Exchange.

Productos

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by