[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] 批处理怎样截取文件修改时间的年月日部分批量重命名?

一个文件夹内有多个txt文件,如何获取每个文件的修改时间,再截取修改时间的年月日部分(就是去掉后面的小时和分钟),将文件名变更为截取后的修改时间。

比如 三个文件                1.txt                                           2.txt                                                  3.txt   
文件的修改时间分别是 2021-‎01-‎08,‏‎17:02:14        2021-‎02-‎08,‏‎17:02:14                     2021-‎03-‎08,‏‎17:02:14

最终修改为 2021-‎01-‎08.txt            2021-‎02-‎08.txt                  2021-‎03-‎08.txt

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "delims=" %%i in ('dir /b /a-d *.txt') do (
  4. for /f "tokens=1-3 delims=/ " %%a in ("%%~ti") do set str=%%a-%%b-%%c
  5. ren "%%i" "!str!%%~xi"
  6. )
  7. pause
复制代码

TOP

回复 2# qixiaobin0715


    运行后 提示   三行               存在一个重名文件,或是找不到文件

TOP

回复 3# llqcnw


    我可以先获取修改时间,然后用 delims=空格 截取出修改时间前面的年月日部分后重命名吗

TOP

不同系统时间显示格式可能会有差别。
你在代码第3/4行之间加入一行代码:echo,%%~ti。
看看时间显示格式,可自己修改下面代码。
如果有几个文件修改时间相同,就会有重名文件,很正常啊。

TOP

把这行代码ren "%%i" "!str!%%~xi"修改为:echo,ren "%%i" "!str!%%~xi"看看是否有重名文件。

TOP

回复 6# qixiaobin0715


    三个文件的修改日期不是同一天了,加上echo后 显示的也不是同一个日期,但后面没有实现 就是pasue后就没有反应,实际没有更名


另外问一下 不截取年月日  直接获取文件的修改时间后重命名    用  for /f %%i in ('dir /b *.txt') do ren %%i %%~ti.txt    有什么问题?   提示命令语法不正确

TOP

  1. ren "%%i" "%%~ti.txt"
复制代码
加引号,文件名有空格?

TOP

回复 7# llqcnw


如果8楼的方法仍未解决你的问题,请参考Q-01观察一下哪行代码在报错以及详细的报错信息:
https://mp.weixin.qq.com/s/6lbb97qUOs1sTyKJfN0ZEQ
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 8# newswan


    文件名里没有空格, 文件的修改日期也不是同一天    加引号后   还是提示 存在一个重名文件或找不到文件

TOP

日期格式中有/:,不能出现在文件名中。

TOP

  1. echo ren "%%i" "%%~ti.txt"
复制代码
输出试试
看看9楼,怎么调试

TOP

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "delims=" %%i in ('dir /b /a-d *.txt') do (
  4. set str=%%~ti
  5. set "str=!str:/=-!"
  6. set "str=!str::=-!"
  7. ren "%%i" "!str!%%~xi"
  8. )
  9. pause
复制代码

TOP

回复 13# qixiaobin0715


    这个好用,谢谢!

能问一下

set "str=!str:/=-!"

set "str=!str::=-!"

这两句语句是什么意思?

TOP

回复 14# llqcnw


    去看教程 字符串替换

TOP

返回列表