用于将文件移动到正确文件夹的批处理脚本
Batch script for moving files to correct folder
我正在寻求帮助来构建 .bat 脚本以将 PDF 移动到预定义的文件夹结构中。文件名是结构化的,并且与它们应移动到的文件夹结构中的位置相关。
例如IRTYCAS001.pdf;
- 前两个字母告诉它把它移动到正确的国家文件夹(爱尔兰)
- 第 3 和第 4 将告诉它要将其移动到哪个县文件夹
- 5 到 7 将告诉它要将其移动到的正确城镇文件夹并且
- 最后 3 位数字告诉它要将其移动到的土地使用类型文件夹
文件名中的标识符长度始终相同。
文件夹结构看起来像
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
我正在寻求帮助来构建 .bat 脚本以将 PDF 移动到预定义的文件夹结构中。文件名是结构化的,并且与它们应移动到的文件夹结构中的位置相关。
例如IRTYCAS001.pdf;
- 前两个字母告诉它把它移动到正确的国家文件夹(爱尔兰)
- 第 3 和第 4 将告诉它要将其移动到哪个县文件夹
- 5 到 7 将告诉它要将其移动到的正确城镇文件夹并且
- 最后 3 位数字告诉它要将其移动到的土地使用类型文件夹
文件名中的标识符长度始终相同。
文件夹结构看起来像 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