没有经历一个shell运行外部命令?

33视图(30天)
Matlab系统()命令允许用户运行外部命令。要做到这一点,它产生一个shell,用它来运行所提供的命令。(参见https://fr.mathworks.com/help/matlab/ref/system.html)
这种行为是伟大的交互使用。然而,对于生产代码,它可能导致问题与特殊字符shell将跟随过分解读给定的命令。因此,例如,一个目录名字中括号可以导致壳错误和防止命令正确执行。
在Python的世界里,子过程模块能够直接运行命令,没有产卵shell(“壳”参数):
Matlab具有相同吗?我知道人们提出了不同的正则表达式来转义字符串,但这只是不够健壮。

接受的答案

1月
1月 2020年12月16日
你可以尝试一个墨西哥人习惯: //www.tianjin-qmedu.com/matlabcentral/fileexchange/341-spawn
也许这对你有用:
运行时= java.lang.Runtime.getRuntime ();
过程= runtime.exec (程序__arg1最长的);%阻塞
%继续Matlab处理并行产生过程…
%……或者:
rc = process.waitFor ();%块Matlab直到外部程序结束
rc = process.exitValue ();%获取一个结束了的过程的返回代码
1评论
乔尔·斯盖瑞尔
乔尔·斯盖瑞尔 2020年12月21日
谢谢!我还没有得到一个机会来试一试,但会尝试当我做汇报。

登录置评。

答案(1)

Nitin Kapgate
Nitin Kapgate 2020年12月16日
您可以从命令行执行操作系统命令MATLAB使用 !操作符 作为替代 系统功能 。感叹号的字符( ! ),有时被称为爆炸,是一个shell逃跑。的 ! 字符显示其余的输入是一个命令行操作系统。
使用 ! 打电话给没有戒烟MATLAB工具或其他可执行程序。
例如,下面的代码打开了Microsoft Excel在WINDOWS平台:
excel.exe !
外部程序完成后或者你退出程序时,操作系统将控制返回到MATLAB。
在后台模式下运行应用程序或显示输出在一个独立的窗口,添加&行结束。
例如,以下语句打开Microsoft Excel程序并返回控制命令提示符,这样你可以继续运行MATLAB命令:
excel.exe !&

类别

找到更多的在国际化帮助中心文件交换

标签

s manbetx 845


释放

R2013b

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!