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

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

  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
复制代码

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

TOP

回复 2# Python

谢谢~! 长知识了~!

TOP

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

TOP

格式化日期可以先取全日期_时间再替换
-符号最后先从日期格式中取值定义下,因为系统不一定全用-符号。
用find 至少有那么一个好处,保证时间不重复~~
初学BAT,非专业。代码不适当之处还望前辈们多多指点。在此表示感谢!

TOP

回复 5# xxpinqz


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

能给点代码看下不?

TOP

也没有更好的方法 日期格式 不一定同
  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
复制代码

TOP

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

TOP

返回列表