工作中一直需要對一些官網進行檔案複製,並且替換內部的一些資訊,以前都是手動操作的,或者通過自己寫的firefox擴充來進行檔案操作的。
現在前端有nodejs了,為什麼不用nodejs寫個一鍵式的呢~~
1.複製目錄
複製檔案的時候,如果直接建立一個不存在的檔案目錄下就不成功了。要上級目錄存在才可以。(nodejs API接觸時間不長,如有有誤,謝謝指正)。
這樣在寫入檔案的時候就檢測一下目錄是否存在,不存在則判斷上級目錄,之後一級一級目錄建立回來,之後就可以複製檔案了
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(); }) }); } }) }};
2.後來還是考慮通過CMD命令“xcopy”實現,但是試了好9,直接執行,可是一直不行,有解決的,歡迎指正
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的方式調用的,就可以了。
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); } });});
嗯,代碼寫的也就那樣,都是一步步的非同步嵌套,就不放出來了,省的被笑話
以上所述就是本文的全部內容了,希望大家能夠喜歡。