亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

node文件批量重命名的方法示例

發布時間:2020-10-05 21:46:14 來源:腳本之家 閱讀:184 作者:bestvist 欄目:web開發

在一個實際需求中,需要對一批文件(如:文本、圖片)進行重命名,按照數字編號。正好借此熟悉了一下node的fs文件操作,寫了一個批量修改文件名的腳本。

需求

現有以下圖片文件

node文件批量重命名的方法示例

需要批量修改文件名稱,變為統一前綴名稱并且自增索引,修改后效果

node文件批量重命名的方法示例

最簡單的人力操作就是逐個文件重命名,但本著DRY(Don't repeat yourself)原則,還是寫一個node腳本搞定。

研究

node中要進行文件操作需要了解一下fs模塊

在fs模塊中有同步和異步兩種方式

讀取文件

//異步
fs.readFile('test.txt', 'utf-8' (err, data) => {
  if (err) {
    throw err;
  }
  console.log(data);
});

//同步
let data = fs.readFileSync('test.txt');
console.log(data);

異步讀取文件參數:文件路徑,編碼方式,回調函數

寫入文件

fs.writeFile('test2.txt', 'this is text', { 'flag': 'w' }, err => {
  if (err) {
    throw err;
  }
  console.log('saved');
});

寫入文件參數:目標文件,寫入內容,寫入形式,回調函數

flag寫入方式:

r:讀取文件
w:寫文件
a:追加

創建目錄

fs.mkdir('dir', (err) => {
  if (err) {
    throw err;
  }
  console.log('make dir success');
});

dir為新建目錄名稱

讀取目錄

fs.readdir('dir',(err, files) => {
  if (err) {
    throw err;
  }
  console.log(files);
}); 

dir為讀取目錄名稱,files為目錄下的文件或目錄名稱數組

獲取文件信息

fs.stat('test.txt', (err, stats)=> {
  console.log(stats.isFile());     //true
})

獲取文件信息后stats方法:

方法 說明
stats.isFile() 是否為文件
stats.isDirectory() 是否為目錄
stats.isBlockDevice() 是否為塊設備
stats.isCharacterDevice() 是否為字符設備
stats.isSymbolicLink() 是否為軟鏈接
stats.isFIFO() 是否為UNIX FIFO命令管道
stats.isSocket() 是否為Socket

創建讀取流

let stream = fs.createReadStream('test.txt');

創建寫入流

let stream = fs.createWriteStreamr('test_copy.txt');

開發

開發思路:

  1. 讀取源目錄
  2. 判讀存放目錄是否存在,不存在時新建目錄
  3. 復制文件
  4. 判斷復制內容是否為文件
  5. 創建讀取流
  6. 創建寫入流
  7. 鏈接管道,寫入文件內容
let fs = require('fs'),
  src = 'src',
  dist = 'dist',
  args = process.argv.slice(2),
  filename = 'image',
  index = 0;

//show help
if (args.length === 0 || args[0].match('--help')) {
  console.log('--help\n \t-src 文件源\n \t-dist 文件目標\n \t-n 文件名\n \t-i 文件名索引\n');
  return false;
}

args.forEach((item, i) => {
  if (item.match('-src')) {
    src = args[i + 1];
  } else if (item.match('-dist')) {
    dist = args[i + 1];
  } else if (item.match('-n')) {
    filename = args[i + 1];
  } else if (item.match('-i')) {
    index = args[i + 1];
  }
});

fs.readdir(src, (err, files) => {
  if (err) {
    console.log(err);
  } else {
    fs.exists(dist, exist => {
      if (exist) {
        copyFile(files, src, dist, filename, index);
      } else {
        fs.mkdir(dist, () => {
          copyFile(files, src, dist, filename, index);
        })
      }
    });
  }
});

function copyFile(files, src, dist, filename, index) {
  files.forEach(n => {
    let readStream,
      writeStream,
      arr = n.split('.'),
      oldPath = src + '/' + n,
      newPath = dist + '/' + filename + index + '.' + arr[arr.length - 1];
    fs.stat(oldPath, (err, stats) => {
      if (err) {
        console.log(err);
      } else if (stats.isFile()) {
        readStream = fs.createReadStream(oldPath);
        writeStream = fs.createWriteStream(newPath);
        readStream.pipe(writeStream);
      }
    });
    index++;
  })
}

效果

node文件批量重命名的方法示例

總結

node提供了很多模塊可以幫助我們完成不同需求的功能開發,使javascript不僅僅局限與瀏覽器中,嘗試自己編寫一些腳本有助于對這些模塊的理解,同時也能提高辦公效率。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

大宁县| 乌拉特前旗| 台江县| 临朐县| 都江堰市| 航空| 华蓥市| 宁化县| 徐水县| 德令哈市| 淮北市| 白河县| 东莞市| 富民县| 常山县| 绵竹市| 阿尔山市| 新丰县| 囊谦县| 六安市| 武功县| 临泽县| 山东省| 文成县| 逊克县| 宿迁市| 新绛县| 宁德市| 新巴尔虎右旗| 惠州市| 阳原县| 都安| 宣武区| 扶余县| 松原市| 徐汇区| 乐东| 垫江县| 新平| 阳信县| 朝阳市|