Board logo

标题: [文件操作] 批处理把当前文件夹下文件全部按现在时间重命名,有没有更好的方法呢? [打印本页]

作者: 441857769@qq.co    时间: 2013-7-12 17:45     标题: 批处理把当前文件夹下文件全部按现在时间重命名,有没有更好的方法呢?

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set num=0
  4. for /f %%i in ('dir /B') do ( set i=%%i
  5. rem 格式化日期
  6. set da=!date:-=_!&&set temp_da=!da:~0,10!&&set ti=!time!&&set temp_ti=!ti::=_!&&set temp_ti=!temp_ti:.=_!
  7. ::查找.字符判断是不是文件夹 文件夹没有“.”
  8. echo "%%i"|find "."&&ren "%%i" !temp_da!_!temp_ti!_!num!.jpg
  9. set /a num+=1
  10. )
  11. pause
复制代码

作者: Python    时间: 2013-7-12 19:46

dir命令本身可以把文件夹过滤掉
  1. dir /b /a-d
复制代码

作者: 441857769@qq.co    时间: 2013-7-12 20:23

回复 2# Python

谢谢~! 长知识了~!
作者: CrLf    时间: 2013-7-12 20:56

for /d 是专门匹配目录的,不过它会忽略隐藏文件夹:
  1. for /d %%a in (*) do (
  2.    rem 你的代码
  3. )
复制代码

作者: xxpinqz    时间: 2013-7-12 21:14

格式化日期可以先取全日期_时间再替换
-符号最后先从日期格式中取值定义下,因为系统不一定全用-符号。
用find 至少有那么一个好处,保证时间不重复~~
作者: 441857769@qq.co    时间: 2013-7-13 09:29

回复 5# xxpinqz


我是菜鸟哈。①有点不明白怎么样取全日期_时间 如何获得?
                  ②find是怎么样保证时间不重复的 ?

能给点代码看下不?
作者: terse    时间: 2013-7-13 10:34

也没有更好的方法 日期格式 不一定同
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "tokens=1* delims=:" %%i in ('dir /b /a-d^|findstr /n .') do ( set i=%%i
  3. for /f "tokens=1-8 delims=-/\:. " %%a in ("!date! !time!") do (
  4. echo ren "%%j" %%a_%%b_%%c_%%e_%%f_%%g_%%h_%%i.jpg"
  5. )
  6. )
  7. pause
复制代码

作者: xxpinqz    时间: 2013-7-13 13:21

回复 6# 441857769@qq.co
关于第一点可以参考7楼代码
第二点,因为FIND执行需要时间的(相当于延迟了),所以下一循环取值时肯定不会和上一次重复的,只是说说,延时手段也很多。
           而没有延迟时,因为代码执行很快,可能循环10来次所取之值都是一样的。
标准化日期时间可参阅:
http://www.bathome.net/thread-3328-1-1.html




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2