本文已参与「新人创作礼」活动,一起开启掘金创作之路。
有时候会有这样的场景,就是有一堆文件、图片、视频等需要重命名。因为从网上下载的文件名往往都是一串乱七八糟的数字字母。我们为了方便记忆和管理需要重命名。但是手动一个个命名又很麻烦,本期就写了一段脚本来帮助命名。
DOS命令
DOS(Disk Operating System),是磁盘操作系统的缩写。从1981年直到1995年的15年间,磁盘操作系统在IBM PC 兼容机市场中占有举足轻重的地位。而且,若是把部分以DOS为基础的Microsoft Windows版本,如Windows 95、Windows 98和Windows Me等都算进去的话,那么其商业寿命至少可以算到2000年。微软的所有后续版本中,磁盘操作系统仍然被保留着。
bat文件是dos下的批处理文件。批处理文件是无格式的文本文件,它包含一条或多条命令。它的文件扩展名为 .bat 或 .cmd。在命令提示下键入批处理文件的名称,或者双击该批处理文件,系统就会调用cmd.exe按照该文件中各个命令出现的顺序来逐个运行它们。使用批处理文件(也被称为批处理程序或脚本),可以简化日常或重复性任务。
批量重命名
先上整体代码:
@echo off
chcp 65001
@echo 预处理 带空格的文件名
@echo off&setlocal enabledelayedexpansion
for /f "delims=" %%i in ('dir /s/b *.*') do (
set "foo=%%~nxi"
set foo=!foo: =!
set foo=!foo: =!
ren "%%~fi" "!foo!"
)
@echo 预处理完成,按任意键开始准备批量重命名信息!
pause
set prefixName=
set /p prefixName=请输入前缀名:
set suffixName=
set /p suffixName=请输后缀缀名:
@echo 请注意按任意键继续 开始重命名!
pause
@echo off
setlocal enabledelayedexpansion
set n=1
for /f %%i in ('dir /b *.%suffixName%') do (
ren "%%i" %prefixName%!n!.%suffixName%
set /a n+=1)
@echo 批量重命名完成!
pause
其中chcp命令是显示或设置活动代码页编号。set命令用于设置全局变量。其核心命令是ren。ren是rename的缩写,如果需要给文件重命名,可使用rename命令。其基本语法是:
ren [oldfile/dirname] [newfile/dirname]
将旧文件/目录名称中的文件名称重新命名为新文件名称。例如:
ren C:\lists.txt C:\newlists.txt
这里用到for循环,目的就是把该目录下所有于目标后缀名匹配的文件都一一列举出来,然后交给ren处理。 DIR 命令的格式:缺省包含所有文件(系统文件.隐含文件)。如果在没有参数的情况下使用,则 dir 显示磁盘的卷标和序列号,后接磁盘上目录和文件的列表,包括它们的名称和最近修改的日期及时间。dir 可以显示文件的扩展名以及文件的字节大小。Dir 也显示列出的文件及目录的总数、累计大小和磁盘上保留的可用空间(以字节为单位)。
dir命令不但可以查找和显示一个特定的文件,还可以显示一类文件。例如输入 dir * .bat ,显示的就是所有扩展名是bat的文件。那这里的*是什么意思呢?在DOS命令中, * 在文件名中出现是代表任意字符的意思。例如,A.*就代表了文件基本名是A,扩展名是任意的所有文件。那么dir a.* 就是把文件基本名是a的所有文件都显示出来。如果用dir A* .* ,将会出现什么结果呢?结果是显示了文件基本名以A开头的所有文件。再深入一点,dir *.*是什么意思呢?在这里文件基本名和扩展名都是任意的,那就等于代表了所有文件,所以这和只输入dir的作用是相同的。