簡體   English   中英

對於某些 Windows 命令,nodejs exec 命令失敗,沒有明確的錯誤消息

[英]nodejs exec command fails for some windows commands with no clear error message

我的程序中有一個編輯器,可以動態編寫命令並執行它們。 我想通過 child_process exec 將 myPublish 目錄中的所有文件和文件夾移動到當前目錄。 我在 Windows 中使用 robocopy 命令。 當我在 cmd 中測試 robocopy 時,它工作正常:

robocopy /s .\myPublish .\ /move

但在程序中,nodejs 給出了一條不清楚的錯誤消息,它只是說:“命令失敗:robocopy /s .\\myPublish .\\ /move\\n”

robocopy 命令失敗

我也剛碰到這個問題。 雖然大多數控制台應用程序在沒有錯誤時應該返回零退出代碼,但 robocopy 有一系列自定義退出代碼。 這讓 Node 認為在執行過程中出現了錯誤,而實際上可能沒有。

根據此處,Robocopy 具有以下構成退出代碼的退出代碼位:

0×10 嚴重錯誤。 Robocopy 沒有復制任何文件。 這要么是使用錯誤,要么是由於對源目錄或目標目錄的訪問權限不足而導致的錯誤。

0×08 無法復制某些文件或目錄(發生復制錯誤並超出重試限制)。 進一步檢查這些錯誤。

0×04 檢測到一些不匹配的文件或目錄。 檢查輸出日志。 家政服務可能是必要的。

0×02 檢測到一些額外的文件或目錄。 檢查輸出日志。 可能需要一些家政服務。

0×01 一個或多個文件復制成功(即有新文件到達)。

0×00 未發生錯誤,未進行復制。 源目錄樹和目標目錄樹完全同步。

要解決此問題,您需要捕獲錯誤並檢查錯誤代碼:

const cp = require('child_process');
try { 
    cp.execSync('robocopy ...'); 
} catch (err) { 
    console.log(err.status);             // get the return code
    console.log(err.output.toString());  // get robocopy's full output
}

我認為您通常會認為大於 8 的代碼是一個更嚴重的錯誤。

暫無
暫無

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

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