批处理文件-Windows 10.如何根据文件名称的中间部分将文件移动到以该部分命名的文件夹中



你能帮我完成这项我正在努力完成的简单任务吗
这是场景

我们有一个文件夹,我们称之为"Folder1",其中包含大量用六对数字命名的文件,如下所示

"78 28 96 32 94 93.jpg">
"52 67 30 29 63 40.jpg">
"17 33 07 11 08 00.jpg"<16 34 33 05 41 53.jpg">

在这些文件旁边,我们有从"00"到"99"的文件夹。在每个文件夹中,我们都有另一组以相同方式命名的文件夹
因此,我们需要做的是根据文件名称中的第4和第5对数字将这些文件移动到现有文件夹中,如下所示

"78 28 9632 9493.jpg"应移到"Folder1\32\94
"52 67 3029 6340.jpg"应移到"Folder1\29\63">
"17 33 0711 0800.jpg"应该移到"文件夹1\11\\08>">
依此类推

如何在"Folder1"中使用批处理文件
文件夹已经存在,我们只需要移动文件
谢谢!

@ECHO OFF
SETLOCAL
SET "sourcedir=U:sourcedir"
FOR /f "delims=" %%a IN (
'dir /b /a-d "%sourcedir%?? ?? ?? ?? ?? ??.jpg" '
) DO (
FOR /f "tokens=4,5delims= " %%p IN ("%%~na") DO (
ECHO MOVE "%sourcedir%%%a" "%sourcedir%%%p%%q"
)
)
GOTO :EOF

您需要更改sourcedir的设置以适应您的情况。

对与提供的掩码匹配的文件(仅)执行目录扫描,然后根据找到的每个文件名的name部分,选择标记4和5到%%p%%q

所需的MOVE命令仅用于测试目的的ECHO验证命令正确后,将ECHO MOVE更改为MOVE以实际移动文件。附加>nul以抑制报告消息(例如1 file moved)

最新更新