我想通过在前面添加文件的创建日期和时间来重命名目录中的所有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)
答案 0 :(得分:1)
如果批处理文件与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文件在创建后被修改,这将是显而易见的。
此外,如果脚本多次执行,这里没有任何内容可以阻止它为相同的文件添加额外的时间戳前缀,所以请记住这一点。
答案 1 :(得分:0)
ren“%file”“%date:〜0,2%。%date:~3,2%。%date:~6,4% - %time-somename.sql”