我想重命名目录中的所有sql文件,方法是在它们前面加上文件的创建日期和时间。
我是命令提示符的新手,从我阅读的内容中想出了以下代码,但它不起作用。
for /f "delims=*" %%I in ('dir *.sql /b /s') do (
set dt=%%~tI
for /f "delims=/: " %%a in ('%dt%') do (set mydate=%%a)
for /f "delims=/: " %%b in ('%dt%') do (set mytime=%%b)
ren %%~nI.sql %mydate%%mytime%_%%~nI.sql)
如果批处理文件与 sql 文件位于同一目录中,则应该可以这样工作:
@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
for /f "tokens=*" %%f in ('dir /b *.sql') do (
set createtime=%%~tf
set createtime=!createtime:/=!
set createtime=!createtime::=!
rename "%%f" "!createtime! %%f"
)
第 2 行和第 3 行set createtime
分别将 /
和 :
替换为 null,因为它们是文件名的无效字符。如果您愿意,可以用其他东西代替它们(例如 -
),将此值插入=
字符的右侧。
请注意,此处(以及示例中)使用的 %%~t
修饰符实际上获取文件的修改时间,而不是创建时间。 仅当您的 sql 文件在创建后被修改时,这才会引起注意。
此外,如果脚本多次执行,这里没有任何内容可以阻止它为相同的文件添加额外的时间戳前缀,因此请记住这一点。
3,2%.%date:~6,4%-%time-somename.sql"