關於用node批量修改文件名

關於node環境的配置和環境變量的配置就再也不這個細說了html

1、首先按需求找到須要使用的模塊node

  fs和path;npm

  const fs=require('fs')api

  const path=require('path')數組

2、步驟ui

  1獲取傳入的參數(也就是擴展名),也就是咱們用什麼方式改擴展名,以下圖傳參的方式,(在每次需求提出的時候,咱們首先考慮的是怎麼用,而後再考慮怎麼寫;)spa

  node也給咱們提供了獲取的方法,process.argv[index];如上圖有四個參數,3d

  官方文檔 https://npm.taobao.org/mirrors/node/latest/docs/api/process.html#process_process_argvcode

  const  old=process.argv[2]htm

  const  now=process.argv[3]

  2而後獲取所有是指定目錄下的指定擴展名的文件,這裏會用到兩個方法process.cwd()、fs.readdirSync();

    該process.cwd()方法返回Node.js進程的當前工做目錄,返回的是一個字符串;

    fs.readdirSync();返回的是個數組以下圖,必定要傳參。fs.readdirSync(path [,options])

  

  const  dir=process.cwd()

  const filenames=fs.readdirSync(dir)

  三、文件名都有了,開始篩選須要修改的名字,可是若是文件夾名有.js,怎麼辦呢?須要咱們篩選一下,

    const list = filenames.filter(item => {
      const isFile = fs.statSync(path.join(dir, item)).isFile()
      const matchExt = path.extname(item) .substr(1)=== old
      return isFile && matchExt
    })

  四、遍歷每個文件,將其擴展名改成指定的值

  path.join()方法path使用平臺特定的分隔符做爲分隔符將全部給定的段鏈接在一塊兒,而後對結果路徑進行規範化。

  下面的source和 target是絕對路徑dir再與後面的item拼在一塊兒;

  fs.renameSync(oldPath,newPath)是替換路徑名的方法;

<a href="https://npm.taobao.org/mirrors/node/latest/docs/api/process.html#process_process_argv">https://npm.taobao.org/mirrors/node/latest/docs/api/process.html#process_process_argv</a>

 

  

  list.forEach(item => {

    const source=path.join(dir,item)
    const target=path.join(dir,item.replace(old,now))

    fs.renameSync(source,target)

  })

相關文章
相關標籤/搜索