【发布时间】:2022-01-21 12:07:17
【问题描述】:
我希望你能在这里帮忙。我对 MacOS 上的批处理命令文件或 Bash 命令文件都不是很有经验(非常欢迎)。
我有数千个 AVI 格式的视频文件(DV 录制文件),其中包含使用 MediaInfo 工具检索的录制日期和时间。 我想使用录制日期信息重命名文件,因为我想用更高效的编解码器 [H.265] 重新编码它们,从而丢失文件中的元信息。 我认为保留信息的最简单方法是将其存储在文件名中。文件名现在带有从 DV 视频传输到 PC 的日期。
我发现this article 非常有用,基于此,我尝试制作一个适用于 Windows 命令提示符的版本。我可以从 MediaInfo 检索正确的信息,但无法让批处理文件正确执行。 for 循环有问题,但我无法弄清楚。我相信有人可以在这里提供帮助。
@echo off & setlocal
cd C:\Users\dagsp\Desktop
for /f "delims=" %%i in ('dir /b /a-d *.avi') do (
set "fnameo=%%~ni"
set "fnamee=%%~xi"
set "RecDate="
for /f "delims=" %%j in ('mediainfo "--Inform=General;%%Recorded_Date%%" "%%~i"') do set "RecordingDate=%%j"
setlocal enabledelayedexpansion
call set "selftest=%%fnameo:[RecDate !RecDate!p]=%%"
if "!selftest!" equ "!fnameo!" if not exist "!fnameo! [RecDate !RecDate!p]!fnamee!" (
echo rename "!fnameo!!fnamee!" "!fnameo! [RecDate !RecDate!p]!fnamee!"
)
endlocal
【问题讨论】:
-
RecordingDate在线7,不应该改为RecDate?` -
你收到错误信息了吗?
-
@Compo,确实是的,谢谢!
-
我没有收到一些错误信息,这很奇怪。
标签: for-loop batch-file metadata rename mediainfo