标题: [文件操作] 批处理把当前文件夹下文件全部按现在时间重命名,有没有更好的方法呢? [打印本页]
作者: 441857769@qq.co 时间: 2013-7-12 17:45 标题: 批处理把当前文件夹下文件全部按现在时间重命名,有没有更好的方法呢?
- @echo off
- setlocal enabledelayedexpansion
- set num=0
- for /f %%i in ('dir /B') do ( set i=%%i
- rem 格式化日期
- set da=!date:-=_!&&set temp_da=!da:~0,10!&&set ti=!time!&&set temp_ti=!ti::=_!&&set temp_ti=!temp_ti:.=_!
- ::查找.字符判断是不是文件夹 文件夹没有“.”
- echo "%%i"|find "."&&ren "%%i" !temp_da!_!temp_ti!_!num!.jpg
- set /a num+=1
- )
- pause
复制代码
作者: Python 时间: 2013-7-12 19:46
dir命令本身可以把文件夹过滤掉复制代码
作者: 441857769@qq.co 时间: 2013-7-12 20:23
回复 2# Python
谢谢~! 长知识了~!
作者: CrLf 时间: 2013-7-12 20:56
for /d 是专门匹配目录的,不过它会忽略隐藏文件夹:- for /d %%a in (*) do (
- rem 你的代码
- )
复制代码
作者: xxpinqz 时间: 2013-7-12 21:14
格式化日期可以先取全日期_时间再替换
-符号最后先从日期格式中取值定义下,因为系统不一定全用-符号。
用find 至少有那么一个好处,保证时间不重复~~
作者: 441857769@qq.co 时间: 2013-7-13 09:29
回复 5# xxpinqz
我是菜鸟哈。①有点不明白怎么样取全日期_时间 如何获得?
②find是怎么样保证时间不重复的 ?
能给点代码看下不?
作者: terse 时间: 2013-7-13 10:34
也没有更好的方法 日期格式 不一定同- @echo off&setlocal enabledelayedexpansion
- for /f "tokens=1* delims=:" %%i in ('dir /b /a-d^|findstr /n .') do ( set i=%%i
- for /f "tokens=1-8 delims=-/\:. " %%a in ("!date! !time!") do (
- echo ren "%%j" %%a_%%b_%%c_%%e_%%f_%%g_%%h_%%i.jpg"
- )
- )
- pause
复制代码
作者: xxpinqz 时间: 2013-7-13 13:21
回复 6# 441857769@qq.co
关于第一点可以参考7楼代码
第二点,因为FIND执行需要时间的(相当于延迟了),所以下一循环取值时肯定不会和上一次重复的,只是说说,延时手段也很多。
而没有延迟时,因为代码执行很快,可能循环10来次所取之值都是一样的。
标准化日期时间可参阅:
http://www.bathome.net/thread-3328-1-1.html
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |