将文件重命名为创建时间(仅限批处理文件)
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 命令只是 ECHO
ed 用于测试目的。 验证命令正确后,将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 重命名为文件夹/子文件夹名称