前缀文件为目录中具有特定扩展名的多个文件创建了日期时间

时间:2012-11-21 17:13:49

标签: batch-file command-prompt file-rename

我想通过在前面添加文件的创建日期和时间来重命名目录中的所有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)    

2 个答案:

答案 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”