You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Matlab的system()命令中保留双引号

在Matlab中通过system向PowerShell传递带空格参数的解决办法

当Matlab调用system()执行PowerShell命令时,由于Windows默认通过cmd.exe中转,双引号会被cmd解析并移除,导致PowerShell无法收到带空格的完整参数。以下是几种可行的解决方式:

方法1:用反斜杠转义双引号

在Matlab中,用\"代替直接的双引号,cmd会将\"解析为实际的双引号传递给PowerShell:

system('powershell.exe echo \"a c\"', '-echo')

执行后PowerShell收到的命令是echo "a c",会输出单行的a c。

方法2:用单引号包裹PowerShell命令

使用PowerShell的-Command参数,将整个要执行的命令用单引号包裹,Matlab中需要用两个单引号表示一个单引号:

system('powershell.exe -Command ''echo "a c"''', '-echo')

Matlab会把两个连续的单引号转换为一个,最终传递给PowerShell的是-Command 'echo "a c"',确保带空格的参数被正确识别。

方法3:通过PowerShell变量传递参数(适合实际文件名场景)

如果是处理实际的文件名,将文件名赋值给PowerShell变量可以避免复杂的引号转义:

filename = '我的 文件.txt';
system(['powershell.exe -Command ''$targetFile = "' filename '" ; Write-Output $targetFile'''], '-echo')

这种方式更直观,也减少了转义出错的概率。

补充说明

Windows下Matlab的system()默认依赖cmd.exe执行命令,而cmd会将双引号作为命令行参数的分隔符处理,导致直接写入的双引号被过滤。上述方法都是通过转义或改变参数传递方式,让双引号能正确传递到PowerShell中,确保带空格的参数被当作一个整体处理。

内容的提问来源于stack exchange,提问作者Argyll

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 23:54:05