首頁 web前端 js教程 node檔案批次重命名實例詳解

node檔案批次重命名實例詳解

Jan 20, 2018 pm 05:45 PM
node 實例 雙重命名

本文主要介紹了node檔案批次重命名的方法範例,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟著小編過來看看吧,希望能幫助大家。

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

需求

現有以下圖片檔案

#需要批次修改檔案名稱,變成統一前綴名稱並且自增索引,修改後效果

#最簡單的人力操作就是逐個檔案重命名,但本著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. 判斷複製內容是否為檔案


建立讀取流

#建立寫入流


連結管道,寫入檔案內容


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提供了許多模組可以幫助我們完成不同需求的功能開發,讓javascript不僅侷限在瀏覽器中,嘗試自己編寫一些腳本有助於對這些模組的理解,同時也能提高辦公室效率。

###相關推薦:#########如何利用node實作一個批次重命名檔案的函數############PHP批次重命名某個資料夾下所有檔案的實作方法介紹############php批次重命名#######

以上是node檔案批次重命名實例詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

驅動程式無法在此裝置上載入 ene.sys 在 Windows 11 中 驅動程式無法在此裝置上載入 ene.sys 在 Windows 11 中 May 05, 2023 am 09:13 AM

許多Windows11用戶遇到錯誤訊息“驅動程式無法在此裝置上載入(ene.sys)”,該訊息會阻止驅動程式在系統上載入並被標記為易受攻擊。但是,此問題主要由已將PC升級到Windows11的用戶報告。此錯誤與由於系統作業系統更新問題而損壞的驅動程式和檔案密切相關。如果您在每次更新後開啟Windows11電腦時都遇到此「ene.sys」錯誤,請繼續閱讀這篇文章。在這裡,您將找到一些在PC上看到此錯誤時可以使用的故障排除方法。修復1–安裝選用更新第1步。使用Windows+R群組

在 Windows 11上快速重新命名印表機的 4 種方法 在 Windows 11上快速重新命名印表機的 4 種方法 Sep 11, 2023 pm 03:26 PM

如果您的辦公室裡有很多印表機,印表機清單可能會很長,並且使完成工作變得乏味。更重要的是,多台印表機通常意味著名稱相似,這可能會有點令人困惑。您想要的最後一件事是滾動瀏覽無窮無盡的列表,但最終仍然將列印作業發送到錯誤的印表機。幸運的是,您可以透過一個簡單的重命名技巧來解決所有這些問題,我們將在下面向您展示。如何在Windows11中重新命名我的印表機? 1.使用「設定」應用程式點擊鍵並點選設定。 Windows按一下藍牙和設備,然後選擇印表機和掃描器。選擇要重新命名的印表機。按一下印表機屬性。導航到常規選項卡,鍵

探險家.exe 在系統啟動時不啟動 [修復] 探險家.exe 在系統啟動時不啟動 [修復] Jun 03, 2023 am 08:31 AM

如今,許多Windows用戶開始遇到嚴重的Windows系統問題。問題是系統載入後Explorer.exe無法啟動,使用者無法開啟檔案或資料夾。雖然,Windows使用者在某些情況下可以使用命令提示字元手動開啟Windows資源管理器,並且每次系統重新啟動或系統啟動後都必須這樣做。這可能是有問題的,並且是由於下面提到的以下因素造成的。損壞的系統檔案。啟用快速啟動設定。過時或有問題的顯示驅動程式。對系統中的某些服務進行了更改。修改後的註冊表文件。請記住以上所有因素,我們提出了一些肯定會對用戶有所幫助

Python中的SVM實例 Python中的SVM實例 Jun 11, 2023 pm 08:42 PM

Python中的支援向量機(SupportVectorMachine,SVM)是一個強大的監督學習演算法,可以用來解決分類和回歸問題。 SVM在處理高維度資料和非線性問題的時候表現出色,被廣泛地應用於資料探勘、影像分類、文字分類、生物資訊學等領域。在本文中,我們將介紹在Python中使用SVM進行分類的實例。我們將使用scikit-learn函式庫中的SVM模

win10如何批次重命名檔案後綴 win10如何批次重命名檔案後綴 Jul 06, 2023 pm 07:37 PM

win10如何批次重命名檔案後綴?現在有非常多的使用者都在使用Win10系統,而我們在平常使用電腦的過程中,常常會用到很多的快捷鍵,因為快捷鍵能讓我們的操作更方便,那麼要怎麼批量重命名文件?下面,小編就為大家介紹下Win10批次重命名檔的操作。 Win10批次重命名檔案的操作1、全選你想重新命名的檔案。 2.在選取狀態的一個檔案上點右鍵,選擇重新命名。 3.一個檔案改好新名稱後,其他文件依序被序號標記。方法很簡單,只不過修改的時候要注意文件排列順序,以及被修改的樣本文件排序位置。序號是從被修改的樣本文件開

CS:GO 在 Windows 10 / 11 中崩潰凍結和黑屏問題 CS:GO 在 Windows 10 / 11 中崩潰凍結和黑屏問題 Apr 30, 2023 pm 06:40 PM

就像您PC上的任何其他遊戲一樣,反恐精英:全球攻勢也可能在啟動時崩潰、凍結或卡在漆黑的螢幕中。 Counter-Strike是市場上的低資源fps遊戲之一,它甚至可以在馬鈴薯PC上運行。雖然CSGO是一款CPU導向的遊戲,但係統GPU也扮演著重要的角色。黑屏問題與GPU問題有關。按照這些簡單的解決方案來解決問題。修復1–關閉相容性如果您在Windows8或7的相容模式下執行遊戲,請將其關閉。 CSGO與每個版本的Windows(WindowsXP或更高版本)

重命名的快捷鍵是什麼 重新命名是什麼按鍵 重命名的快捷鍵是什麼 重新命名是什麼按鍵 Feb 22, 2024 pm 02:50 PM

重新命名的快速鍵是F2。解析1重新命名的快速鍵是F2。2想要為某個檔案或資料夾重新命名的話,可以在選取該檔案後按下F2,直接修改後按下回車鍵即可。 3有時候也可以用滑鼠勾選檔案後點選右鍵,選擇重新命名,修改完成後按下回車鍵即可。 4快捷鍵指的是透過鍵盤上按鍵的特殊組合或順序來快速完成某個指令,可以有效提升工作效率。補充:快捷鍵是什麼1快捷鍵,又叫熱鍵,指的是透過某些特定的按鍵、按鍵順序或按鍵組合來完成一個操作。利用快捷鍵可以代替滑鼠做一些工作,可以利用鍵盤快捷鍵開啟、關閉和導航開始功能表、桌面、選單、對話框

PHP函數介紹—rename(): 重新命名檔案或目錄 PHP函數介紹—rename(): 重新命名檔案或目錄 Jul 25, 2023 pm 12:10 PM

PHP函數介紹—rename():重新命名檔案或目錄介紹:在PHP中,rename()函數用來重新命名檔案或目錄。它提供了一種簡單的方法來更改檔案或目錄的名稱。無論是單一檔案還是整個目錄,都可以使用這個函數進行重新命名操作。透過指定來源檔案或目錄的名稱以及目標名稱,可以輕鬆完成重新命名過程。語法:boolrename(string$source,str

See all articles