DOS按规则批量重命名所有(子)目录下文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DOS按规则批量重命名所有(子)目录下文件相关的知识,希望对你有一定的参考价值。

参考技术A 一种方法就是做个批处理程序,内容就是无数个rename命令行
这么多命令行一个个敲不是累坏了,用excel处理。
第一步,命令行进入文件所在目录,输入命令:dir/b
>
c:\filename,在C盘就有一个保存目录下所有文件名的文本文件了。
第二步,用excel打开这个文件(打开对话框的文件类型要选择所有文件),所有的文件名就出现在excel的第一列了。
第三步,excel编辑这个文件做成批处理需要的格式,文件名前面插入一列,全部填上rename,第二列是原始文件名了,第三列是要修改成的文件名,按照你的需求来做吧,复制、查找替换什么的。
第四步,保存文件,保存对话框选择所有文件类型,文件名写成filename.bat。主要是扩展名写成bat,前面的名字随便了。
第五步,filename.
bat拷贝到要处理的那个目录下,命令行进入这个目录,执行filename.bat。
完成。
其他需求,自己可以想想看。

目录下所有图片按修改时间批量重命名

背景:有很多不同来源的图片,命名格式差异很大,很多图片名没有包含时间信息,当拷贝这些图片到新的设备时,图片的创建时间会变成当前时间,导致既不能按时间排序,也不能根据文件名来识别图片日期,因此在导入到新设备前先批量处理不符合规范的图片名称,处理期间不处理IMG_开头的,因为这种图片是手机原相机拍摄的,后面已经包含了时间信息。

批处理文件,保存成bat


@echo off&setlocal enabledelayedexpansion
for /f "delims=" %%a in ('dir /a-d /b') do (
:next
set "t=%%~ta"
@echo %%~nxa    %%~ta 
set "head=%%~nxa"
set "head1=!head:~0,4!"
if "!head1!" == "IMG_" (
@echo jump filename = %%~nxa
goto next
)
set "t=!t:~0,4!!t:~5,2!!t:~8,2!_!t:~11,2!!t:~14,2!"
if not "%~n0"=="%%~na" if not exist "IMG_!t!_1%%~xa" (ren "%%~nxa" "IMG_!t!_1%%~xa") else (
call :rennum "%%~nxa")
)
goto :eof
:rennum
set n=1
:loop
set "name=%~1"
set "ext=%~x1" 
if not exist "IMG_!t!_!n!!ext!" (ren "%name%" "IMG_!t!_!n!!ext!") else (
set /a n+=1
goto loop
)

以上是关于DOS按规则批量重命名所有(子)目录下文件的主要内容,如果未能解决你的问题,请参考以下文章

dos 文件重命名

批处理:批量重命名父文件夹下所有子文件夹里的文件

Bat批处理:批量重命名包含指定名称文件夹里的指定文件

bat批处理文件夹下所有子文件夹下最后一个的文件重命名?

用Python批量重命名文件

目录下所有图片按修改时间批量重命名