我试图创建一个运行带有一些参数的命令的VSCode任务。
"tasks": [
{
"label": "Execute in Max",
"type": "shell",
"command": "cd\\; C:\\MXSPyCOM.exe",
"args": [
"-f",
"'${file}'"
],
"problemMatcher": []
}
]
从中我得到错误:
&安培; :模块' cd'无法加载。有关更多信息,请运行“导入 - 模块cd”。 在行:1 char:3 +& ' CD \; C:\ MXSPyCOM.exe' -f' c:\ Users \ ... + ~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo:ObjectNotFound:(cd \; C:\ MXSPyCOM.exe:String)[],CommandNotFoundException + FullyQualifiedErrorId:CouldNotAutoLoadModule
我相当肯定问题是它试图执行的命令:'cd\; C:\MXSPyCOM.exe' -f 'c:\Users\
由于某种原因,主命令块被包装在单引号中,这使得shell认为它是单个命令,当它的多个时。
这并没有发生这种情况,几个月前,当我上次使用它时,我确实使用了这个确切的命令。知道什么可能是错的吗?
答案 0 :(得分:1)
是的,直到1.21.0 vscode只是在args中有空格时发出警告,最新版本包装命令和带有单引号的args,当它们里面有空格时。 只需通过
打破命令,使其中没有空格"command": "cd\\;C:\\MXSPyCOM.exe",
或
"command": "cd\\;",
"args": [
"C:\\MXSPyCOM.exe",
...
如果没有这样的选项(例如将命令传递给ssh会话),我所做的是:
"command": "ssh",
"args": [
"host_name",
"bash",
"-c",
"'\"",
"cd /some_dir;",
...
"\"'"
],
快速而肮脏的解决方法是根本不使用args
字段,并在command
中拥有完整命令。
另一个解决方案是编写自己的脚本,然后从tasks.json
中调用它们