[PowerShell] 纯文本查看 复制代码 @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
你试试 未成功的话会放到同级未成功文件夹,一般是获取不到时间会移动到这里 |