我正在尝试处理文件夹中的所有文件,如下所示:
IMG_20161216_202848.jpg
IMG_20161216_203848.jpg
IMG_20161101_102848.jpg
IMG_20161102_112848.jpg
将被移动到这样的文件结构中:
2016年12月
- IMG_20161216_202848.jpg
- IMG_20161216_203848.jpg
2016年11月
- IMG_20161101_102848.jpg
- IMG_20161102_112848.jpg
如您所见,有一个顶级文件夹,其中包含Month - Year名称和文件的子内容。我希望从文件的上次修改日期获取顶级文件夹的月份和年份。这些文件需要递归提取,然后全部放入上面的结构中;没有更多的递归。不会有任何文件名重复,如果只是覆盖它。
实现上述目标的Windows批处理脚本命令是什么?
对于记录,我打开了一个也可以执行此操作的Windows应用程序 - 我使用一些参数进行设置,并为所有文件进行设置。
感谢。
答案 0 :(得分:0)
@ECHO Off
SETLOCAL ENABLEDELAYEDEXPANSION
SET "sourcedir=U:\sourcedir"
SET "destdir=U:\destdir"
FOR /f "tokens=1-3delims=_" %%a IN (
'dir /b /a-d "%sourcedir%\IMG_*_*.jpg" '
) DO IF "%%c" neq "" (
SET /a dmonth="(%%b / 100) %% 100"
SET /a dyear=%%b / 10000
FOR %%m IN (January February March April May June
July August September October November December) DO SET /a dmonth-=1&IF !dmonth!==0 (
ECHO MD "%destdir%\%%m !dyear!" 2>nul
ECHO MOVE "%sourcedir%\%%a_%%b_%%c" "%destdir%\%%m !dyear!\"
)
)
GOTO :EOF
您需要更改sourcedir
和destdir
的设置以适合您的具体情况。
为了测试目的,所需的MOVE命令仅为ECHO
。 在您确认命令正确后,将ECHO MOVE
更改为MOVE
以实际移动文件。附加>nul
以取消报告消息(例如1 file moved
)
所需的MD命令仅用于ECHO
用于测试目的。 在您确认命令正确无法后,将ECHO(MD
更改为MD
以实际创建目录。如图所示附加2>nul
以禁止显示错误消息(例如,当目录已存在时)
此过程假定所有与IMG_*_*.jpg
文件掩码匹配的文件名严格为IMG_ 8numerics _ .jpg。
阅读_
上的每个源文件名和标记。取%%b
中的第二个标记除以100并计算mod 100给出月份。将%%b
中的日期除以10000给出年份。对于每个月份名称,递减dmonth
,如果dmonth
变为零,则%%m
将包含月份名称作为文本,因此请使该目录忽略错误消息并移动文件。
适合子目录扫描和另一个文件掩码(请注意,这些看似微小的变化可能需要完全不同的方法)
@ECHO Off
SETLOCAL ENABLEDELAYEDEXPANSION
SET "sourcedir=U:\sourcedir"
SET "destdir=U:\destdir"
FOR /f "tokens=1-3delims=_" %%a IN (
'dir /b /s /a-d "%sourcedir%\IMG_*_*.jpg" "%sourcedir%\VID_*_*.mp4" '
) DO IF "%%c" neq "" (
SET /a dmonth="(%%b / 100) %% 100"
SET /a dyear=%%b / 10000
FOR %%m IN (January February March April May June
July August September October November December) DO SET /a dmonth-=1&IF !dmonth!==0 (
ECHO MD "%destdir%\%%m !dyear!" 2>nul
ECHO MOVE "%%a_%%b_%%c" "%destdir%\%%m !dyear!\"
)
)
GOTO :EOF
[未测试]
答案 1 :(得分:0)
由于您已明确允许Windows工具的建议来完成此任务,因此我建议使用Naru程序“FlexibleRenamer”(http://hp.vector.co.jp/authors/VA014830/english/FlexRena/)。
重命名文件并移动它基本上是相同的操作,您可以使用此程序查找文件夹树中的所有图像文件,使用其文件名的部分或上次访问日期来构建新的子文件夹并移动他们进入那个文件夹。对于像* .mp3这样的其他文件,它甚至可以读取和使用MP3标签。