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按规则批量重命名所有(子)目录下文件的主要内容,如果未能解决你的问题,请参考以下文章