我正在使用ExifTool将相机机身序列号更改为一组图像中每个图像的唯一序列号,编号为数百个。相机机身序列号被用作第二个位置,除了图像的序列号在IPTC中之外,还需要输入序列号,因为它需要花费更多的精力才能删除。
序列号的格式为### - ### - #### - ####,其中最后四位数是要递增的数字。对于我运行的每个批次,前三组数字不会改变。我只需要增加最后一组数字。
示例 如果我在第一批中有100张图像,它们将被编号:
811-010-5469-0001,811-010-5469-0002,811-010-5469-0003 ... 811-010-5469-0100
我可以成功将一组图像拖到我的ExifTool Shortcut上,其值为
exiftool(-SerialNumber='001-001-0001-0001')
它将更改图像上的Exif SerialNumber标记,但是没有成功添加到此图像中以使其为每个图像增加。
我尝试了下面的变体而没有成功:
exiftool(-SerialNumber+=001-001-0001-0001)
exiftool(-SerialNumber+='001-001-0001-0001')
我意识到ExifTool很可能会在第一行中减去数字并将第二行视为字符串。我也尝试过:
exiftool(-SerialNumber+='1')
exiftool(-SerialNumber+=1)
只是为了看看我是否能用基本的单位数字来增加它。这也没效果。
也许这不能以这种方式递增,我需要从命令行使用ExifTool。如果是这样,我正在学习命令行/ powershell(Windows),但在这方面仍然很弱,如果这是我需要采取的路线,我会很感激一些指示。我不怕使用命令行,只需要更多的手持一个正常的起点。我也正在学习Linux并且可以从那里开始这个项目,但是再次,不要害怕使用它,只需要更多的手持即可完成它。
我使用PHP,JavaScript和其他语言编程,所以代码对我来说并不陌生。只是为命令行编写它的经验。
如果需要进一步澄清,请在评论中告知我们。
感谢您的帮助和指导!
答案 0 :(得分:1)
如果我理解你的问题,这样的事情应该有效:
1..100 | % {
$sn = '811-010-5469-{0:D4}' -f $_
# apply $sn
}
或者像这样(如果你遍历文件):
$i = 1
Get-ChildItem 'C:\some\folder' -File | % {
$sn = '811-010-5469-{0:D4}' -f $i
# update EXIF data of current file with $sn
$i++
}
答案 1 :(得分:1)
您可能必须转到命令行而不是依赖拖放,因为此命令依赖于ExifTool的高级格式化。
Exiftool "-SerialNumber<001-001-0001-${filesequence;$_=sprintf('%04d', $_+1 )}" <FILE/DIR>
如果您想要更通用并在文件中使用原始序列号,可以使用
Exiftool "-SerialNumber<${SerialNumber}-${filesequence;$_=sprintf('%04d', $_+1 )}" <FILE/DIR>
这只会将文件计数添加到图像中当前序列号的末尾,但如果您有来自同一目录中多个摄像机的图像,则可能会变得混乱。
至于使用命令行,您只需要重命名以删除parens中的命令,然后将其移动到命令行路径中的某个位置或使用ExifTool的完整路径。
至于先前尝试的说明,+=
选项与数字和列表一起使用。 SerialNumber标记通常是一个字符串,但这可能取决于它被写入的位置。