批处理文件 - Windows 10.如何将基于名称中间部分的文件移动到该部分之后命名的文件夹

时间:2017-11-13 17:12:38

标签: batch-file batch-processing

你能帮我解决这个与我挣扎的简单任务吗?
这是场景。

我们有一个文件夹,我们称之为" 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 96 32 94 93.jpg"应移至" Folder1 \ 32 \ 94 "
" 52 67 30 29 63 40.jpg"应移至" Folder1 \ 29 \ 63 "
" 17 33 07 11 08 00.jpg"应移至" Folder1 \ 11 \ 08 "
等等。

我们如何使用" Folder1"?中的批处理文件执行此操作 文件夹已经存在,我们只需要移动文件 谢谢!

1 个答案:

答案 0 :(得分:1)

@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

相关问题