2017-09-08 6 views
0

Je cherche de l'aide pour construire un script .bat afin de déplacer des fichiers PDF dans une structure de dossiers prédéfinie. Les noms de fichiers sont structurés et se rapportent à l'endroit où ils doivent être déplacés dans la structure de dossiers. Par exemple, IRTYCAS001.pdf;Script Batch pour déplacer les fichiers dans le dossier correct

  • deux premières lettres disent de se déplacer dans le dossier de pays correct (Irlande)
  • 3 et 4 va lui dire quel dossier du comté pour le déplacer vers
  • 5 au 7 va lui dire la ville correcte dossier pour le déplacer et
  • 3 derniers chiffres dire que ce dossier type d'utilisation du sol pour le déplacer vers

les longueurs d'identification sera toujours le même dans le nom du fichier.

La structure du dossier ressemble example of folder structure

Merci à l'avance Rob

Répondre

1

Avec les extensions activée (par défaut) mkdir va créer des dossiers intermédiaires en une étape.
Donc, tout ce que vous avez à faire est

  • itérer les fichiers
  • utiliser des sous-chaînes pour diviser le nom de fichier en plusieurs parties et
  • créer les dossiers sinon déjà existants.

@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!" 
) 

arbre Exemple:

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

vous pouvez essayer quelque chose comme ceci:

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%