首頁 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

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

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

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

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

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

熱門話題

Java教學
1665
14
CakePHP 教程
1423
52
Laravel 教程
1321
25
PHP教程
1269
29
C# 教程
1249
24
驅動程式無法在此裝置上載入 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或更高版本)

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

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

如何在 Windows 11/10 上變更文件類型 如何在 Windows 11/10 上變更文件類型 Oct 27, 2023 pm 02:13 PM

更改檔案類型(擴展名)是一項簡單的工作。但是,有時更簡單的事情可能會變得棘手,更改檔案副檔名就是其中之一。更改文件類型時應格外小心,因為一個簡單的錯誤可能會使文件變磚並使其無法操作。因此,我們討論了在Windows11、10上更改文件類型的多種方法。如何在Windows11、10上更改文件類型有兩種方法可以做到這一點。您可以使用直接GUI方法(在檔案總管中),也可以從終端機變更檔案類型。方式1–使用檔案總管方式2–使用CMD終端方式1–直接變更檔案類型您可以直接從檔案總管中的上下

See all articles