标题: [日期时间] [文件管理] 批处理将文件重命名为文件创建时间(精确到秒) [打印本页]
作者: kimpppg 时间: 2024-6-4 15:43 标题: [文件管理] 批处理将文件重命名为文件创建时间(精确到秒)
我搜了一下,找到一个改成修改时间的。自学了一下, 没找到改哪里。 所以,请求一下帮助。这个怎么改成创建时间。
支持拖放、支持子目录、支持设置要修改的文件类型(这些功能很简单,可自行添加代码),兼容特殊字符。批处 ...
powerbat 发表于 2012-3-7 21:15
作者: smss 时间: 2024-6-4 18:10
- @Echo off&SetLocal EnableDelayedExpansion
- for /r %%i in (*)do set t=%%~ti&set t=!t:/=!&set t=!t: =!&set t=!t::=!&if "%%i" neq %0 ren "%%i" !t!%%~xi
- pause
复制代码
作者: kimpppg 时间: 2024-6-4 20:32
回复 2# smss
好用,很快。但好像是改成修改时间。
作者: aloha20200628 时间: 2024-6-4 21:29
本帖最后由 aloha20200628 于 2024-6-4 21:50 编辑
回复 1# kimpppg
仅用纯P的for循环变量的时间属性值,拿不到秒级精度,改用powershell是一个捷径,只是其首启略慢...
以下代码存为test.bat,运行时可直接把目标目录托给test.bat即可,运行结果是将目标目录(包括子目录)中的全部非隐藏文件更名,其格式如 20240605211842.jpg,如果发现重名,其格式如 20240605211842_1.jpg;代码第7行数字9管控重名序号范围 1-9,该值可调整;test.bat应与目标目录分开否则亦被更名;代码第2行采用临时文件,考虑若更名目录包含文件过多,则dir文件简报不宜置于for循环条件表达式中,以免降速或被阻塞。
- @echo off &if "%~1"=="" exit/b
- pushd "%~1" &dir /b/s/a-d>"%temp%\pF.lst"
- for /f "usebackq delims=" %%F in ("%temp%\pF.lst") do (
- for /f %%t in (' powershell "(ls """%%~F""").creationTime.tostring("""yyyyMMddHHmmss""")" ') do (
- if not exist "%%~dpF%%t%%~xF" (ren "%%F" "%%t%%~xF") else (
- set "x=1"
- for /L %%n in (1,1,9) do if defined x if not exist "%%~dpF%%t_%%n%%~xF" (set "x="&ren "%%F" "%%t_%%n%%~xF")
- )
- )
- )
- del/q "%temp%\pF.lst" &popd &pause &exit/b
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |