1. 程式人生 > >node實現檔案屬性批量修改(時間屬性)

node實現檔案屬性批量修改(時間屬性)

# 前言 在預設情況下,一個檔案的`建立時間`和`修改時間`是系統自己設定的,我們不能修改該的。但我們有時為了某種特殊需要,為了不讓別人一眼看出檔案已經給修改了,我們又需要修改檔案的`建立時間`和`修改時間`。那麼如何修改資料夾時間,如何修改檔案的建立時間,如何批量修改檔案的`建立時間`、`修改時間`和`訪問時間`呢?彆著急,接下來就帶你自己修改他們。所以,閒話不多說啦,開始寫我們的程式碼啦~~ > ps:小工具推薦[NewFileTime](https://wwa.lanzous.com/iNDjKdqzg9e),以上簡述摘抄於`NewFileTime` # 簡單的搭建一下 - 新建一個 `files` 目錄 - 初始化一個`node`專案工程 ```bash npm init -y ``` 看到這裡你會發現,其實我沒有安裝依賴,是因為原生的庫有這個自帶的功能嗎?說是也行,說不是也行。原生的`utimes`目前支援修改檔案的`修改時間`和`訪問時間`,不支援修改檔案的`建立時間`,所以我們需要藉助一個第三方庫來修改。 ## 為什麼不直接安裝這個第三方庫呢? 因為這個庫有些許特殊,分兩種情況,一個是低版本`Node`可以直接安裝,在我本機的`Node13`上執行則會失敗。具體原因嘛,可以看看下方的連結 > ps: [原因 + 解決方案](https://github.com/ronomon/utimes/pull/8) 所以,在低版本的`Node`我們可以直接`npm install @ronomon/utimes`,而在版本相對較高的則需要`npm i https://github.com/Jule-/utimes.git#napi-migration`啦 這裡也提一嘴,如果`@ronomon/utimes`安裝失敗的話,是因為這些`原生Node`拓展是需要編譯的,所以我們可能需要安裝`windows-build-tools`,即以管理員身份啟動`PowerShell`並執行: ```bash npm install --global windows-build-tools ``` 安裝完依賴之後就可以正式寫我們的程式碼啦,其實這個程式碼相對簡單,就是直接呼叫它的`api`就好了。 # 簡單的使用一下 - 新建一個`test-files`資料夾 - 在`test-files`資料夾新建`1.txt`檔案供我們測試 ![1.txt檔案](https://cdn.JsDelivr.net/gh/GATING/blog_imgs/2020-06-17/utimes02.jpg) - 編寫如下程式碼: ```js // 匯入 utimes const { utimes } = require("@ronomon/utimes"); utimes( "./test-files/1.txt", // 建立時間 +new Date("2010/01/01"), // 修改時間 +new Date("2010/01/02"), // 訪問時間 +new Date("2010/01/03"), (err) => { // 修改成功的回撥 console.log(`success`); } ); ``` - 執行程式碼,`node app.js`,是都發現日期發生了改變呢? ![1.txt檔案](https://cdn.JsDelivr.net/gh/GATING/blog_imgs/2020-06-17/utimes02.jpg) 看到這裡你以為是不是寫完了,其實也差不多了