batch-file - 根据文件夹内文件名批量设置日期时间属性

标签 batch-file

感谢您的阅读和可能的答案。

我有一个文件夹,其中包含名为 yyyymmddhhMMss.m2ts 的文件,例如 20120330193059.m2ts。实际上,它们是索尼摄像机的输出,带有缺少元数据的额外文件。

为了让它们正确组织,我需要根据文件名设置“创建日期”和“修改日期”文件属性,因为所有必要的数据都已存在。

我完全远离任何类型的编程或编码,但我认为我可以使用我能找到的示例自己编译 .cmd。但现在我必须承认我失败了。

我知道我必须将文件名放入变量中,将此变量拆分为 6 部分,然后将它们应用为文件夹中每个文件的文件属性。但我不明白怎么办。

有很多示例说明如何根据时间戳重命名文件,但反之则不然。

任何帮助将不胜感激。

最佳答案

您可以尝试下面的批处理文件。首先使用一组测试文件。

@echo off
setlocal EnableDelayedExpansion
set origDate=%date%
set origTime=%time%
for %%f in (*.*) do (
   set fName=%%~Nf
   set fDate=!fName:~4,2!/!fName:~6,2!/!fName:~0,4!
   set fTime=!fName:~8,2!:!fName:~10,2!:!fName:~12,2!
   REM Next line update just "Date Modified" in a fast way:
   REM echo !fDate!| date & echo !fTime!| time & copy "%%f" +,,
   REM Next 4 lines update both "Modified" and "Created" dates, but it is slower:
   echo !fDate!| date & echo !fTime!| time & copy "%%f" "%%~Nf.tmp"
   echo !fTime!| time & copy "%%~Nf.tmp" +,,
   del "%%f"
   ren "%%~Nf.tmp" "%%f"
)
echo %origDate%| date
echo %origTime%| time

此批处理文件要求您有足够的凭据来更改系统时钟。假设echo %date%以MM/DD/YYYY格式显示日期;如果没有,则需要稍作修改。如果要处理的文件数量较多,系统时钟可能会往后拨几秒;也许您需要在批处理文件结束时手动重置系统时钟。

请报告结果。

编辑:我在上面的同一列表中包含了两个部分(修改日期和创建日期)。

关于batch-file - 根据文件夹内文件名批量设置日期时间属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9946293/

相关文章:

windows - 使用 Windows 批处理脚本在 FOR 循环中计数

windows - 从相对路径和/或文件名解析绝对路径

linux - 如何在 git pull 命令中输入密码?

file - 简单批处理,用于检查Internet连接并根据结果设置环境变量%internet%

windows - 如何从批处理文件中打开最大化的java应用程序?

windows - 根据结果​​将批处理文件输出到文本文件

windows - 如何在不杀死其他cmd的情况下杀死一个cmd进程?

php - 如何将 php 变量传递到 Windows 批处理文件

windows - 在批处理脚本之后继续使用 CMD 命令

windows - 在 Windows 命令行中运行多个命令