Przesyłanie plików wsadowo z jednego folderu do wielu folderów na podstawie maski pliku

2

Mam folder zawierający ponad sto tysięcy (100 000+) plików pdf wygenerowanych przez skrypt, które należy przenieść do wielu folderów na podstawie nazwy pliku. Wszystkie pliki pdf mają następujące nazwy: YY-nnnnn.pdfgdzie YY oznacza rok, a nnnnn oznacza sekwencję plików w ciągu roku, jak poniżej:

00-00001.pdf
00-00002.pdf
00-00003.pdf

Każdego roku zawiera około 25 000 plików. Wygenerowałem pliki od czterech lat, nadal mam do wygenerowania pliki pdf o wartości 6 lat.

Muszę przenieść te pliki na serwer. Serwer ma następującą strukturę folderów:

D:.
├───00-00000
├───00-01000
├───00-02000
├───00-03000
├───00-04000
├───00-05000
├───00-06000
├───00-07000
├───00-08000
├───00-09000
├───00-10000
├───00-11000

Każdego roku może mieć do YY-25000folderów. Pliki muszą być przenoszone do własnego folderu na podstawie pierwszych pięciu znaków, takich jak to:

├───00-00000
│       00-00001.pdf
│       00-00002.pdf
│       00-00003.pdf
│       00-00004.pdf
...
│       00-00997.pdf
│       00-00998.pdf
│       00-00999.pdf
│       
├───00-01000
│       00-01000.pdf
│       00-01001.pdf
│       00-01002.pdf

Myślałem o użyciu tego RoboCopynarzędzia, ale nie mogłem wymyślić, jak poprawnie go napisać. Być może wymagany będzie mały skrypt.

cha
źródło

Odpowiedzi:

1

Znaleziono rozwiązanie oparte na tym pytaniu. Plik wsadowy do przeniesienia plików jest następujący:

@echo off
    for /f "tokens=*" %%F in ('dir/b/a-d d:\temp\pdfprints\*.pdf') do call :sub1 %%F
    goto :eof

    :sub1
    set name=%1
    move d:\temp\pdfprints\%name% R:\%name:~0,5%000\%name%
cha
źródło