2

У меня есть папка с более чем ста тысячами (более 100 000) PDF-файлов, созданных с помощью сценария, которые необходимо переместить в несколько папок на основе имени файла. Все pdf-файлы имеют следующие названия: YY-nnnnn.pdf где YY - год, а nnnnn - последовательность файлов в течение года, например:

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

Каждый год содержит около 25 000 файлов. Я сгенерировал файлы за четыре года, у меня еще есть 6 лет на создание PDF-файлов.

Мне нужно переместить эти файлы на сервер. Сервер имеет следующую структуру папок:

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

Каждый год может иметь до 25 YY-25000 папок. Файлы должны помещаться каждый в свою собственную папку на основе первых пяти символов, например так:

├───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

Я думал об использовании утилиты RoboCopy но не мог понять, как правильно ее написать. Возможно, понадобится небольшой скрипт.

1 ответ1

1

Нашел решение на основе этого вопроса. Пакетный файл для перемещения файлов выглядит так:

@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%

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .