簡體   English   中英

從 nodejs 運行多個 windows 命令

[英]Run multiple windows commands from nodejs

當我的 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' }

我對在 Windows 中運行此類任務了解不多,但我懷疑您可能需要將它們分解為多個調用或它們之間的&&

命令字符串中的反斜杠不會被轉義。 您可以使用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}`;

根據node-cmd文檔,您的代碼是完美的,但我認為您的問題在於您的項目路徑,這意味着您的第一個命令未執行,這是因為您的反斜杠沒有轉義,根據您的錯誤消息,您的路徑是projectmy_project哪個不正確,您需要將路徑更新為這樣D:\\project\\my_project

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM