Batch file 如何设置文件';使用ExifTool从文件名中删除DateTimeOriginal

Batch file 如何设置文件';使用ExifTool从文件名中删除DateTimeOriginal,batch-file,cmd,exiftool,Batch File,Cmd,Exiftool,我有一个包含许多图像文件的目录,这些图像文件没有设置DateTimeOriginal元数据,但文件名本身中的日期格式为yymmdd,例如20120524\u 091536.mp4 我想使用exiftool将这些文件移动到具有年份的文件夹中,然后移动到该月份的子文件夹中(稍后还可以使用文件名中的此日期设置其DateTimeOriginal) 大概是这样的: exiftool -d "%Y-%m-%d" "-testname<D:\Pictures\${filename#;DateFmt('%

我有一个包含许多图像文件的目录,这些图像文件没有设置DateTimeOriginal元数据,但文件名本身中的日期格式为
yymmdd
,例如
20120524\u 091536.mp4

我想使用exiftool将这些文件移动到具有年份的文件夹中,然后移动到该月份的子文件夹中(稍后还可以使用文件名中的此日期设置其DateTimeOriginal)

大概是这样的:

exiftool -d "%Y-%m-%d" "-testname<D:\Pictures\${filename#;DateFmt('%Y')}\${filename#;DateFmt('%m')}\$FileName" "D:\Pictures\2012-05-24" -r 

但是,我不需要将datetimeoriginal设置为filemodifydate,而是需要将其设置为从文件名格式化的日期。

要从文件名设置
datetimeoriginal
,命令如下所示
exiftool“-DateTimeOriginal谢谢你!这很好,但现在发现了另一种情况。我有一些格式为
YYYYMMDD_uxxxxx.avi
的文件,还有一些是
YYYY-MM-DD_xxxxx.avi
,其中
xxxxx
是一些随机的nbr。此正则表达式格式的结果是:
'D:/Pictures/2012-05-24/2009-01-07 114.avi'-->'D:/Pictures/2009/2009-01-07 114.avi/2009-01-07 114.avi'
。我知道我可以更改正则表达式以正确设置每个场景的格式,但是如何使用您提供的正则表达式有条件地只重命名那些与
YYYYMMDD_uuxxxxx.avi
格式匹配的文件名,而忽略其他带有破折号的文件?
-if
函数不显示它不包括正则表达式:if选项允许“类似Perl的逻辑表达式”,因此您可以像这样使用Perl绑定运算符:`-if“$filename=~/^\d{8}\ud{6}/”来仅匹配具有8digits模式的文件。
exiftool '-datetimeoriginal<filemodifydate' -if '(not $datetimeoriginal or ($datetimeoriginal eq "0000:00:00 00:00:00")) and ($filetype eq "JPEG")'