nodejs調(diào)用cmd命令實現(xiàn)復(fù)制目錄
工作中一直需要對一些官網(wǎng)進行文件復(fù)制,并且替換內(nèi)部的一些信息,以前都是手動操作的,或者通過自己寫的firefox擴展來進行文件操作的。
現(xiàn)在前端有nodejs了,為什么不用nodejs寫個一鍵式的呢~~
1.復(fù)制目錄
復(fù)制文件的時候,如果直接創(chuàng)建一個不存在的文件目錄下就不成功了。要上級目錄存在才可以。(nodejs API接觸時間不長,如有有誤,謝謝指正)。
這樣在寫入文件的時候就檢測一下目錄是否存在,不存在則判斷上級目錄,之后一級一級目錄創(chuàng)建回來,之后就可以復(fù)制文件了
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”實現(xiàn),但是試了好9,直接執(zhí)行,可是一直不行,有解決的,歡迎指正
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的方式調(diào)用的,就可以了。
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); } }); });
嗯,代碼寫的也就那樣,都是一步步的異步嵌套,就不放出來了,省的被笑話
以上所述就是本文的全部內(nèi)容了,希望大家能夠喜歡。
相關(guān)文章
express框架,報錯:“Cannot set headers after t
這篇文章主要介紹了express框架,報錯:“Cannot set headers after they are sent to the client”,解決方法,結(jié)合實例形式總結(jié)分析了常見的問題原因與對應(yīng)的解決方案,需要的朋友可以參考下2023-05-05通過nodejs 服務(wù)器讀取HTML文件渲染到頁面的方法
今天小編就為大家分享一篇通過nodejs 服務(wù)器讀取HTML文件渲染到頁面的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-05-05利用yarn實現(xiàn)一個webpack+react種子
其實以前就寫過如何使用React-router和Webpack快速構(gòu)建一個react程序。后來發(fā)現(xiàn)版本太老,于是乎最近又重新組織了下結(jié)構(gòu),使用最近發(fā)布的yarn作為包管理工具,介紹下基本安裝步驟,有需要的朋友們下面來一起看看吧。2016-10-10