Переместить файлы в папки по пять штук? - PullRequest
0 голосов
/ 22 декабря 2018

Предположим, у меня есть 50 файлов, отсортированных по имени. Я хотел бы создать пакетный сценарий, который даст мне следующий результат:

Files 1 through 5 -> 01-05
Files 6 through 10 -> 06-10

и т. Д. Как я могу создать пакетный сценарий длядостичь этого?Обратите внимание, что 01-05 и 06-10 являются именами каталогов.

РЕДАКТИРОВАТЬ: Подробности

Например,Учтите это:

  • Исходный каталог:
    • 101.mp4
    • 102.mp4
    • 103.mp4
    • 104.mp4

и т. Д.

Мне нужна результирующая структура каталогов, подобная этой:

  • Каталог назначения:
  • 101-105:

    • 101.mp4
    • 102.mp4
    • 103.mp4
    • 104.mp4
    • 105.mp4
  • 106-110:

    • 106.mp4
    • 107.mp4
    • 108.mp4
    • 109.mp4
    • 110.mp4

и т. Д.

1 Ответ

0 голосов
/ 22 декабря 2018

Это то, что вы хотите, измените fileCount, чтобы изменить номер файла в каждом подкаталоге:

@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
set fileCount=5
set filesNow=0
set nameStart=000
set nameEnd=000
FOR /F "usebackq delims=" %%i IN (`dir /b /O:N *.mp4`) do (
    set /a filesNow+=1
    set /a tmpValue=filesNow %% fileCount
    ::echo !filesNow!
    ::echo !fileCount!
    ::echo %%i
    ::echo !tmpValue!
    if "!tmpValue!"=="1" (
        set "nameStart=%%~ni"
        mkdir _tmpDir_
    )
    move %%~nxi _tmpDir_\
    if "!tmpValue!"=="0" (
        rename _tmpDir_ !nameStart!-%%~ni
    )
    set "nameEnd=%%~ni"
)

if exist _tmpDir_ rename _tmpDir_ %nameStart%-%nameEnd%

Вам нужно поместить их в файл bat / cmd для работы.
filesNow для подсчета количества файлов.
По сути, это создает папку tmp и перемещает файлы внутрь,
Когда файлы внутри нее достигают номера, измените имя папки.
Несколько тестов echo Команда, которую я не сделалудалите, просто использовали ::, чтобы закомментировать их, вы можете удалить ::, чтобы протестировать их снова.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...