@echo
off
setlocal enabledelayedexpansion
REM 创建“未成功”文件夹(如果不存在)
if
not exist
"未成功"
(
mkdir
"未成功"
)
REM 遍历当前目录下的所有.mp4文件
for
%%f
in
(*.mp4)
do
(
REM 获取文件名(不含扩展名)
set
"filename=%%~nf"
REM 提取第一个下划线后的部分
for
/f
"tokens=2,3 delims=_"
%%a
in
(
"!filename!"
)
do
(
set
"datetime=%%a%%b"
)
REM 检查是否成功提取时间
if
defined datetime (
REM 将时间格式转换为YYYY-MM-DD HH:MM:SS
set
"year=!datetime:~0,4!"
set
"month=!datetime:~4,2!"
set
"day=!datetime:~6,2!"
set
"hour=!datetime:~8,2!"
set
"minute=!datetime:~11,2!"
set
"second=!datetime:~12,2!"
set
"newdate=!year!-!month!-!day!"
set
"newtime=!hour!:!minute!:!second!"
REM 使用PowerShell修改文件的创建时间和修改时间(修复大括号转义)
powershell
-command
"$file = Get-Item '%%f'; $newDateTime = [datetime]::ParseExact('!newdate! !newtime!', 'yyyy-MM-dd HH:mm:ss', [System.Globalization.CultureInfo]::InvariantCulture); $file.CreationTime = $newDateTime; $file.LastWriteTime = $newDateTime"
REM 检查是否修改成功
if
errorlevel 1 (
echo 修改失败: %%f
REM 复制到“未成功”文件夹
move
"%%f"
"未成功\%%~nxf"
)
else
(
echo 已修改文件: %%f 的创建时间和修改时间为 !newdate! !newtime!
)
)
else
(
echo 无法提取文件名中的时间部分: %%f
REM 复制到“未成功”文件夹
move
"%%f"
"未成功\%%~nxf"
)
)
echo 所有文件处理完成!
pause