用于将文件移动到正确文件夹的批处理脚本

Batch script for moving files to correct folder

我正在寻求帮助来构建 .bat 脚本以将 PDF 移动到预定义的文件夹结构中。文件名是结构化的,并且与它们应移动到的文件夹结构中的位置相关。

例如IRTYCAS001.pdf;

文件名中的标识符长度始终相同。

文件夹结构看起来像 example of folder structure

你可以尝试这样的事情:

FOR /F %%i IN ('dir /b c:\temp\*.pdf') DO call :moveFiles %%i

goto :EOF

:moveFiles
set myfile=%1
set part1=%myfile:~0,2%
set part2=%myfile:~2,2%
set part3=%myfile:~4,3%
set part4=%myfile:~7,3%

set dstFolder=C:\temp

if %part1%==IR set dstFolder=%dstFolder%\ireland
REM more options here...

if %part2%==TY set dstFolder=%dstFolder%\tipperary
REM more options here...

if %part3%==CAS set dstFolder=%dstFolder%\cashel
REM more options here...

if %part4%==001 set dstFolder=%dstFolder%\residential
REM more options here...


move /Y %myfile% %dstFolder%

启用扩展(默认)mkdir 将一步创建中间文件夹。
所以你所要做的就是

  • 迭代文件
  • 使用子字符串将文件名拆分成多个部分
  • 创建文件夹(如果尚不存在)。

@echo off & setlocal EnableDelayedExpansion
set Src=A:\
set Dst=A:\
for /f "delims=" %%A in ('Dir /B "%Src%*.pdf"') do (
    Set "File=%%A"
    set "Folder=%Dst%\!File:~0,2!\!File:~2,2!\!File:~4,3!\!File:~7,3!\"
    if not exist "!Folder!" MD "!Folder!" >NUL
    Move "%%A" "!Folder!"
)

示例树:

> tree . /f
A:\
└───IR
    └───TY
        └───CAS
            └───001
                    IRTYCAS001.pdf