nodejs呼叫cmd命令實現複製目錄

antzone發表於2017-04-07

下面就簡單介紹一下如何實現標題中的要求,需要的可以做一下參考。

複製檔案的時候,如果直接建立一個不存在的檔案目錄下就不成功了。要上級目錄存在才可以.

這樣在寫入檔案的時候就檢測一下目錄是否存在,不存在則判斷上級目錄,之後一級一級目錄建立回來,之後就可以複製檔案。

程式碼如下:

[JavaScript] 純文字檢視 複製程式碼
var dirCache = {};//快取減少判斷
function makedir (pathStr, callback) {
  if (dirCache[pathStr] == 1) {
    callback();
  } else {
    fs.exists(pathStr, function (exists) {
      if (exists == true) {
        dirCache[pathStr] == 1;
        callback();
      } else {
        makedir(path.dirname(pathStr), function () {
          fs.mkdir(pathStr, function () {
            dirCache[pathStr] == 1;
            callback();
          })
        });
      }
    })
  }
};

後來還是考慮通過CMD命令“xcopy”實現,但是試了好,直接執行,可是一直不行,有解決的,歡迎指正

[JavaScript] 純文字檢視 複製程式碼
var exec = require('child_process').exec;
  exec('xcopy D:\\WORK_new\\odinQuest D:\\WORK_new\\newGame /s /e /Q /Y /I',
    function (error, stdout, stderr) {
      if (error !== null) {
        //console.log('exec error: ' + error);
      }
  });

後來通過將CMD命令寫入檔案,通過call的方式呼叫的,就可以了。

[JavaScript] 純文字檢視 複製程式碼
fs.writeFile('xcopy.bat', cmdstr, function (err) {
  if (err) throw err;
  var exec = require('child_process').exec;
  exec('call "'+process.cwd()+'/xcopy.bat',
    function (error, stdout, stderr) {
      if (error !== null) {
        //console.log('exec error: ' + error);
      }
      
  });
});

相關文章