我正在尝试创建一个运行带有一些参数的命令的 VSCode 任务。
"tasks": [
{
"label": "Execute in Max",
"type": "shell",
"command": "cd\\; C:\\MXSPyCOM.exe",
"args": [
"-f",
"'${file}'"
],
"problemMatcher": []
}
]
从那我得到错误:
& : The module 'cd' could not be loaded. For more information, run 'Import-Module cd'. At line: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 认为它是一个命令,当它是多个命令时。这过去没有发生过,几个月前我上次使用它时,这个确切的命令工作得很好。知道有什么问题吗?
最佳答案
是的,直到 1.21.0 vscode 在 args 中有空格时才发出警告,最新版本在命令和 args 中有空格时用单引号包装。
只需打破命令使其中没有空格,要么
"command": "cd\\;C:\\MXSPyCOM.exe",
或者
"command": "cd\\;",
"args": [
"C:\\MXSPyCOM.exe",
...
当没有这样的选项(例如将命令传递给 ssh session )时,我要做的是:
"command": "ssh",
"args": [
"host_name",
"bash",
"-c",
"'\"",
"cd /some_dir;",
...
"\"'"
],
快速而肮脏的解决方法是不使用
args
字段,并在 command
中拥有完整的命令.另一种解决方案是编写自己的脚本,然后从 tasks.json 中调用它们
关于visual-studio-code - VSCode 任务将命令包装在 ' ' 引号中,在多行命令上破坏了参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49753483/