Win CMD,根据文件日期将文件移动到目录

时间:2012-12-31 16:48:41

标签: date batch-file copy cmd

我正在尝试编写一个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批处理文件编码知之甚少。

1 个答案:

答案 0 :(得分: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
    )
)

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

请参阅robocopy /?寻求帮助。