1

我正在尝试编写一个 Windows 7 批处理脚本,将 SD 卡上的相机照片移动到计算机硬盘上的目录中。该目录应包含图片创建日期的年月。

示例文件:E:\DCIM\100CANON\IMG_0190.jpg, 2012/12/31

到:C:\Users..Pictures\2012\12\

我的想法是为年、月和日编写 FOR 循环,然后移动比结果日期更新的文件:

FOR /L %%Y IN (2014,-1,2011) DO ( FOR /L %%M IN (12,-1,1) DO ( FOR /L %%D IN (31,-1,1) DO ( ROBOCOPY E:\DCIM\100CANON\ C:\Users..Pictures\%%Y\%%M\ *.* /MAXAGE:%%Y%%M%%D /MOVE ) ) )

但这不起作用,因为在低于 10 的月份和日期中缺少 0 ......

不幸的是,我对 Windows 批处理文件编码没有很好的了解。

4

1 回答 1

0

由于您按月将它们分开,因此您不需要日循环。

我所做的只是删除了日期循环(不包括每个月第一天之前的图片)并添加了 if 语句,该语句将调用robocopy带有填充月份数字的命令。

FOR /L %%Y IN (2014,-1,2011) DO (
    FOR /L %%M IN (12,-1,1) DO (
        if %%M LSS 10 ROBOCOPY E:\DCIM\100CANON\ C:\Users..Pictures\%%Y\0%%M\ *.* /MAXAGE:%%Y0%%M01 /MOVE /L
        if %%M GEQ 10 ROBOCOPY E:\DCIM\100CANON\ C:\Users..Pictures\%%Y\%%M\ *.* /MAXAGE:%%Y%%M01 /MOVE /L
    )
)

我还建议/L在实际移动文件之前使用 robocopy 上的选项来验证结果!只需/L在您准备好实际移动文件时删除,而不仅仅是显示文件。

robocopy /?寻求帮助。

于 2012-12-31T17:03:42.250 回答