【问题标题】:Run multiple windows commands from nodejs从 nodejs 运行多个 windows 命令
【发布时间】:2020-02-14 20:52:24
【问题描述】:

当我的 windows 服务器收到一个 post 请求时,我需要它来执行一个命令:

cd D:\project
git pull
mvn clean compile
cd target
java -jar app.jar -argument

我写了代码,但它不起作用:

const nodeCmd = require('node-cmd')

app.post((req, res) => {
  let command = `cd D:\project\my_project
                 git pull
                 mvn clean compile
                 cd target
                 java -jar app.jar ${req.body.arg}`;
  nodeCmd.get(command, (err, data, stderr) => {
    if(data) { 
     return res.json(data);
    }
    return err;
 });
})

这里是错误信息:

{ Error: Command failed: cd D:projectmy_project && dir
The system cannot find the path specified.

    at ChildProcess.exithandler (child_process.js:294:12)
    at ChildProcess.emit (events.js:198:13)
    at maybeClose (internal/child_process.js:982:16)
    at Process.ChildProcess._handle.onexit (internal/child_process.js:259:5)
  killed: false,
  code: 1,
  signal: null,
  cmd: 'cd D:Tempautobooker && dir' }

【问题讨论】:

  • 你能告诉我们错误信息吗?
  • 我用错误堆栈跟踪更新了我的问题

标签: node.js windows command-line automation


【解决方案1】:

命令字符串中的反斜杠不会被转义。您可以使用string.raw 指示 JS 引擎将模板文字视为原始字符串。

let command = String.raw`cd D:\project\my_project
                         git pull
                         mvn clean compile
                         cd target
                         java -jar app.jar ${req.body.arg}`;

【讨论】:

  • 转义确实有帮助,只是得到空响应,没有错误或任何东西,尝试使用简单的命令cd D:\\projects\\my_project && dir
  • 好的,这个现在有帮助,问题就像你说的那样,我正在使用`
【解决方案2】:

我对在 Windows 中运行此类任务了解不多,但我怀疑您可能需要将它们分解为多个调用或它们之间的&&

【讨论】:

  • 也试过了,不成功
  • 那有点超出我的专业知识,对此感到抱歉。您是否尝试过直接使用 child_process?
  • 我刚刚看到你的错误堆栈,你没有转义目录字符串中的反斜杠 `\`。试试看。
【解决方案3】:

根据node-cmd 文档,您的代码是完美的, 但我认为您的问题在于您的项目路径,这意味着您的第一个命令未执行,这是因为您的反斜杠没有转义,根据您的错误消息,您的路径是 projectmy_project 这是不正确的,您需要将路径更新为像这样D:\\project\\my_project

【讨论】:

  • 转义也没有帮助,我尝试了简单的命令:cd D:\\projects\\my_project && dir,尽管有几个文件和文件夹,但它返回了空结果。
  • 空结果不代表你的命令失败了,尝试在cd 之后添加另一个命令来打印当前路径,尝试在cd D:\\projects\\my_project之后添加echo %cd%,让我们看看它打印
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-08
  • 1970-01-01
  • 1970-01-01
  • 2012-08-31
  • 2016-08-13
相关资源
最近更新 更多