亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

node fs重命名問題

node fs重命名問題

慕尼黑8549860 2018-08-03 09:06:35
需求 : 對一個文件夾中的所有jpg文件重命名為 1.jpg 、2.jpg、3.jpg、...依次類推;問題1:使用node的fs模塊代碼如下:var fs = require('fs');var counter = 1;var re = /(.*)+\.(jpg|bmp|gif|png)$/i; fs.readdir('./', function(err, files) {    if (err) {        console.log("失敗了");     } else {        for (var index = 0; index < files.length; index++) {            var element = files[index];            if (re.test(element)) {                 fs.rename(element,counter + '.jpg', function(err, fil) {                    if (err) {                        console.log(counter + '命名失敗');                     } else {                        // console.log(files);                         console.log(counter + '命名成功');                         counter++;                     }                 })             }         }     } })運行前:運行后:請問: 為什么會只剩下1.jpg? 問題出在哪里?問題2: 你知道的幾種方法可以做到這樣的重命名? shell 、 正則replace、python等等皆可, 望給出代碼實例;
查看完整描述

1 回答

?
狐的傳說

TA貢獻1804條經驗 獲得超3個贊

fs.rename 是異步的,所以就沒法保證counter的值是按順序累加的,推薦以下寫法(在Windows上測試過).

fs.readdir('./', function(err, files) {    if (err) {        console.log("失敗了");        return;  //如果出錯直接返回,就不用else了
    }
    files.forEach(function(fn){ //這樣更簡便
        if(!re.test(fn)) return;        console.log(">>> "+ fn);
        fs.renameSync(fn,counter + '.jpg' ); //同步重命名
        counter++;
    });   
});


查看完整回答
1 反對 回復 2018-09-25
  • 1 回答
  • 0 關注
  • 705 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號