用于将文件移动到正确文件夹

时间:2017-09-08 09:16:54

标签: file batch-file move directory-structure

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

例如 IRTYCAS001.pdf ;

  • 前两个字母告诉它将其移至正确的国家/地区文件夹(爱尔兰)
  • 第3和第4将告诉它将其移动到哪个县文件夹
  • 第5到第7将告诉它正确的城镇文件夹将其移动到
  • 最后3位数告诉它将土地使用类型文件夹移至

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

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

提前致谢 罗布

2 个答案:

答案 0 :(得分:1)

启用扩展程序(默认)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

答案 1 :(得分:0)

你可以尝试这样的事情:

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%