从nodejs运行多个Windows命令
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从nodejs运行多个Windows命令相关的知识,希望对你有一定的参考价值。
当我的Windows Server收到发布请求时,我需要它来执行命令:
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' }
答案
我对在Windows中运行此类任务一无所知,但我怀疑您可能需要将其分解为多个调用或它们之间的&&
。
另一答案
您的命令字符串中的反斜杠不会转义。您可以使用string.raw
指示JS引擎将模板文字视为原始字符串。
string.raw
另一答案
根据let command = String.raw`cd D:\project\my_project
git pull
mvn clean compile
cd target
java -jar app.jar ${req.body.arg}`;
文档,您的代码很完美,但是我认为您的问题出在您的项目路径中,这意味着您的第一个命令未执行,这是因为您的反斜杠未转义,根据错误消息,您的路径为node-cmd
,这是不正确的,您需要将路径更新为像这样projectmy_project
以上是关于从nodejs运行多个Windows命令的主要内容,如果未能解决你的问题,请参考以下文章
使用 NodeJS 和 JSDOM/jQuery 从代码片段构建 PHP 页面