相片管理必备:文件批量改名工具 自动以日期时间命名

2019-01-30 04:21:52刘景俊

参数1=Help,显示程序帮助 (Help=H=?)
【示例】
ChgName.bat *.jpg d:photo d:new
处理文件夹d:photo中的*.jpg文件,复制到目录d:new中,不保留原文件名,按[文件的日期时间+序号]命名。
ChgName.bat *.jpg d:photo d:new Y
处理文件夹d:photo中的*.jpg文件,复制到目录d:new中,保留原文件名,按[文件的日期时间+原文件名]命名。
ChgName.bat 10*.jpg d:photo d:new N 20100910
处理文件夹d:photo中的10*.jpg文件,复制到目录d:new中,不保留原文件名,按[20100910+序号]命名。
ChgName.bat 10*.jpg d:photo d:new Y 20100910
处理文件夹d:photo中的10*.jpg文件,复制到目录d:new中,保留原文件名,按[20100910+原文件名]命名。
  主要代码如下:

@echo off
setlocal enabledelayedexpansion
echo.
::echo 参数:%1 ,%2 ,%3 , %4
echo 将目录[%2]中的文件%1,复制到目录[%3]中并用文件日期命名……
echo.
echo ---处理如下---
echo.
::如果目标目录不存在时,创建
if not exist %3 (
echo.
echo 目标目录[%3]不存在,正在创建……
md %3
echo --目标目录创建成功!
echo.
)
set pNo=0
for /r %2 %%i in (%1) do (
set pFTime=%%~ti
if /I {%5}=={} (
::以文件的日期时间命名
set pFNewName=!pFTime:~0,4!!pFTime:~5,2!!pFTime:~8,2!_!pFTime:~11,2!!pFTime:~14,2!
) else (
::以任意名称命名
set pFNewName=%5
)
set /a pNo=!pNo!+1
if /I "%4"=="Y" (
copy %%i %3!pFNewName!_%%~nxi
echo !pNo! %%~nxi - %%~ti 更名为 !pFNewName!_%%~nxi
) else (
copy %%i %3!pFNewName!_!pNo!%%~xi
echo !pNo! %%~nxi - %%~ti 更名为 !pFNewName!_!pNo!%%~xi
)
)

  最后,要鄙视一下联想手机的程序设计者,用那拍出的相片倒也是以日期时间命名的,但这丫的只取了日期和时间,省略的年份和月份,比如10/8号拍的,命名为081230.jpg,真不知道怎么想的,省那么点事做什么……难道在督促我们一天一整理么!
  还有那软件功能,文件夹设置,太烂了!
  一句话:太垃圾……
  PS:附上程序运行示例~
D:>chgname *.jpg d:myTemp11 d:mytempnew
【欢迎使用 文件批量改名程序/ChgName.bat_V1.0.0.1 By Taoether】
将目录[d:myTemp11]中的文件*.jpg,复制到目录[d:mytempnew]中,并修改文件
名……
---处理如下---
目标目录[d:mytempnew]不存在,正在创建……
--目标目录创建成功
已复制 1 个文件。
1 231759.jpg - 2010/09/23 17:59 更名为 20100923_1759_1.jpg
已复制 1 个文件。
2 23175902.jpg - 2010/09/23 17:59 更名为 20100923_1759_2.jpg
已复制 1 个文件。
3 照片083.jpg - 2010/09/23 18:17 更名为 20100923_1817_3.jpg
已复制 1 个文件。
4 照片085.jpg - 2010/09/23 21:29 更名为 20100923_2129_4.jpg
相关文章 大家在看