如何在MATLAB脚本中向外部终端程序example.exe传递命令?
解决MATLAB脚本自动向终端程序传递命令的问题
嘿,我太懂你这种卡壳的感觉了——手动敲命令能和example.exe顺畅交互,但想把流程写到MATLAB脚本里自动化就摸不着头脑对吧?其实核心是要把你手动输入的命令通过标准输入流传递给这个终端程序,而不是只调用exe本身。这里有两个实用方案:
方案1:用命令文本文件重定向输入
这个方法适合命令较多或者需要复用命令列表的场景:
- 先在MATLAB脚本里自动生成包含所有命令的文本文件:
% 创建临时命令列表文件 cmdFile = fopen('cmd_list.txt', 'w'); fprintf(cmdFile, 'calculate\n'); fprintf(cmdFile, 'random\n'); fprintf(cmdFile, 'export random.txt\n'); fprintf(cmdFile, 'quit\n'); fclose(cmdFile); - 然后通过
system命令让example.exe读取这个文件的内容作为输入:
注意:如果你的exe路径包含空格,一定要给路径加双引号,比如system('C:\.....\example.exe < cmd_list.txt');"C:\My Programs\example.exe"。
方案2:直接通过管道传递命令
如果不想生成临时文件,可以用Windows的管道功能,把多个echo命令的输出直接传给exe:
system('(echo calculate && echo random && echo export random.txt && echo quit) | C:\.....\example.exe');
这里的括号是为了把所有echo命令的输出合并成一个流,再通过|管道传给目标程序。同样,路径有空格记得加双引号。
额外小贴士
- 因为你手动输入命令能正常执行,说明
example.exe肯定支持从标准输入读取命令,不用额外担心兼容性; - 用
&&连接命令会确保前一个命令执行成功后再执行下一个,比&更稳妥,适合有执行顺序依赖的命令; - 如果用了方案1的临时文件,脚本最后可以加
delete('cmd_list.txt')自动清理掉。
内容的提问来源于stack exchange,提问作者Alex Heintz
相关产品推荐
相关产品推荐

