关于用node批量修改文件名

关于node环境的配置和环境变量的配置就不再这个细说了

一、首先按需求找到需要使用的模块

  fs和path;

  const fs=require(‘fs‘)

  const path=require(‘path‘)

二、步骤

  1、获取传入的参数(也就是扩展名),也就是我们用什么方式改扩展名,如下图传参的方式,(在每次需求提出的时候,我们首先考虑的是怎么用,然后再考虑怎么写;)

  node也给我们提供了获取的方法,process.argv[index];如上图有四个参数,

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

  const  old=process.argv[2]

  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)

  3、文件名都有了,开始筛选需要修改的名字,但是如果文件夹名有.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
    })

  4、遍历每一个文件,将其扩展名改为指定的值

  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)

  })

 

时间: 2024-10-05 05:00:11

关于用node批量修改文件名的相关文章

CMD命令实现批量修改文件名

cmd命令批量修改文件名:  (批量去掉下载电影后的前缀) @echo off for /f "delims=" %%a in ('dir /b/s/a-d [阳光电影www.ygdy8.com].*') do (     set "str=%%~nxa"     setlocal enabledelayedexpansion     ren "%%a" "!str:~20!"     endlocal ) 批量删除文件名特定

如何用python从文中获取文件名再用正则表达式批量修改文件名

第零步:问题的提出 我在网上购买了星火英语的六级晨读美文100篇(六级早已高分飘过,不过很喜欢这些文章,买来重新品味),但是发现其文章的命名都为01.txt或10.txt等.为了便于检索需要修改文件名称. 第一步:从文件中取出文件名. 我发现txt文件的第一行为文件名,格式为如:Passage 3. Three Passions I Have Lived for, 后面还有几个换行符.写下如下代码进行第一步修改: import os x = 1 while x < 101: if x < 10

Linux中批量修改文件名

有时候我们有一个目录下面的文件名都需要重新命令 如: 以下有十个学生完成的脚本,现在需要将finish改为ing [[email protected] test]# touch student_{01..10}_finish.sh [[email protected] test]# ls student_* student_01_finish.sh  student_03_finish.sh  student_05_f student_02_finish.sh  student_04_finis

shell脚本:批量修改文件名(删除文件名中字符)

shell脚本:批量修改文件名(文件名中添加字符) 上一篇写过批量修改文件名(文件名中添加字符),工作中还存在这样的需求,批量修改文件名,删除文件名中的某些字符: 举例如下:批量改名,删除文件名中多余字符 目录下文件名为如下,要求去掉_finished. stu_102999_1_finished.jpg stu_102999_2_finished.jpg stu_102999_3_finished.jpg stu_102999_4_finished.jpg stu_102999_5_finis

MFC批量修改文件名工具

1批量修改文件名描述 1.1功能描述 批量修改同一文件夹下文件名字,可以定义一个新名字,后面接着文件从0开始的序号. 1.2所需技术 CFileDialog,CString方法操作得到所需,rename 2批量修改文件名运行流程 3批量修改文件名详细设计 3.1添加文件按钮响应OnAddFile 按下"添加文件"按钮后,打开一个文件对话框objFileDlg.但是要设置objFileDlg最大文件名缓冲区.然后获得第一个文件的起始位置,依次把全部的文件完整名添加到列表控件中,这里列表控

Linux下批量修改文件名(rename)

原文地址: http://blog.csdn.net/sea_shore/article/details/6102437 1.rename命令批量修改文件名, 其实linux下可以使用别的办法来批量修改文件名, 不过rename实在太方便了 比如把所有的表为cdb1_* 修改为cdb_*的在本目录下只需要# rename 'cdb1' 'cdb' * 以前都是写个for循环来做...想想多傻啊, 呵呵 rename还有更多的功能, 建议man rename下 From:http://www.ha

控制台 批量修改文件名

static void Main(string[] args) { string text = @" __________________用于批量修改文件_______________________ 注意事项: 1.在CMD 中执行命令 2.修改的目标文件,是以.ts 结尾 3.一共4个参数, 4.如果参数中存在空格,则用 引号 包含参数 args[0] 参数 : 目录 args[1] 参数 : 文件名 args[2] 参数: 要保存的目标文件,从 begin 开始计数.如果找到++ args

C# 批量修改文件名

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.IO; using System.Text.RegularExpressions; namespace W

VBS自编写脚本。(实现批量修改文件名且在执行前,备份原有文件夹中的文件)

'=========================================================================='' VBScript Source File -- Created with SAPIEN Technologies PrimalScript 4.0'' NAME: '' AUTHOR: Microsoft , Microsoft' DATE : 2014/7/9'' COMMENT: '批量修改文件夹下对应的所有文件名''==========