将文件重命名为创建时间(仅限批处理文件)

Posted

技术标签:

【中文标题】将文件重命名为创建时间(仅限批处理文件)【英文标题】:Rename file to creation time (batch file only) 【发布时间】:2015-04-20 23:38:38 【问题描述】:

不确定仅使用批处理文件是否可行。

我有一个名为 BaseFile.7z 的文件,位置是 E:\Backup\C Drive Zip\BaseFile.7z

是否可以创建一个批处理命令来重命名文件及其创建日期?例如 BaseFile - 02-19-2015.7z

我目前有一个命令,可以用我粘贴在下面的当前日期来重命名文件以供参考,但这并不完全是我想要的。我需要创建日期。

RENAME "E:\Backup\C Drive Zip\Jaipur.txt" "BaseFile - %date:/=-%.txt"

【问题讨论】:

【参考方案1】:
@ECHO OFF
SETLOCAL
SET "filename=U:\sourcedir\zzz.zzz"
IF NOT EXIST "%filename%" ECHO "%filename%" NOT found&GOTO :eof
SET "datepart="
FOR /f "tokens=1-3delims=/-:" %%a IN ('dir /tc "%filename%"') DO IF "%%c" neq "" SET "datepart=%%a-%%b-%%c"
FOR /f %%a IN ("%filename%") DO FOR /f %%d IN ("%datepart%") DO ECHO(REN "%%a" - "%%~na %%d%%~xa"
GOTO :EOF

所需的 REN 命令只是 ECHOed 用于测试目的。 验证命令正确后,将ECHO(REN更改为REN以实际重命名文件。

请注意,在使用日期引用时存在一般的草率。每个文件都有三个日期 - 实际创建日期(使用 /tc)、最后访问日期(/ta)和最后写入日期(/tw)。

该进程找到文件,然后读取dir 列表并选择适当的日期。清单中唯一或最后一行将包含第三个非空标记是相关文件的日期/时间,因此datepart 将获得yyyy-mm-dd hh

for/f %%a 然后将完整的文件名应用到%%a 准备将其分区到其组件中,for/f %%d 将来自datepart 的第一个标记(即直到空格)分配给 %%d。

将组件组合在一起,然后报告结果...

【讨论】:

以上是关于将文件重命名为创建时间(仅限批处理文件)的主要内容,如果未能解决你的问题,请参考以下文章

在目录/子目录中生成文件文件夹 list.txt 文件并在批处理文件中使用 dir 和 ren 命令将 list.txt 重命名为文件夹/子文件夹名称

将文件重命名为哈希和扩展名

将文件夹中的文件重命名为序号

将文件夹名称从 YYYYMMM 更改为 MMMM YYYY

检测文件是不是在批处理文件中打开

如何将文件重命名为另一个文件系统?