Пакетный скрипт для перемещения каждого набора из n файлов в разные новые папки - PullRequest
0 голосов
/ 16 марта 2020

Я пытаюсь сгруппировать файлы, расположенные в некотором порядке, чтобы я мог сжать их. У меня есть m * n файлов в моей папке и wi sh, чтобы переместить n файлов в m папок так, чтобы они были расположены в алфавитном порядке (или в порядке создания даты, в зависимости от того, что выполнимо). Таким образом, для файлов {A, B, C, D, E, F} I w sh необходимо создать две новые папки 1 и 2, в которых 1 содержит {A, B, C}, а 2 содержит {D, E, F}. Если есть код, который делает то же самое на ма c, это тоже было бы здорово, но я в первую очередь хочу сделать это на windows.

Я нашел похожий вопрос , однако я не могу создавать новые папки внутри l oop или перемещать в них файлы.

@echo off
set /a "filesPerChunk=3, idx=0"
set /a fcount=1

for /F "delims=" %%I in ('dir /a-d /b') do (
    echo Processing %%I
    set /a "idx=idx+1"
    set /a "mod=idx %% filesPerChunk"
    if !mod! equ 0 (
    md File-%fcount%
        echo --- END OF CHUNK %fcount% ---
        pause
    )
    move I File-%fcount%
    if !mod! equ %filesPerChunk%-1(
    set /a fcount+=1
    )
)

Я пытался извлечь значения из fcount для создания новых папок, но, как я уже говорил, у меня нет большого опыта написания пакетных скриптов, поэтому я не знаю, имеет ли это смысл .

РЕДАКТИРОВАТЬ: Так что мне пришлось переместить несколько команд здесь и там, потому что я понял, что не смогу переместить файлы, если у меня была только последняя проверка при создании файла, но я не уверен, что это работает

1 Ответ

0 голосов
/ 16 марта 2020

Я взял на себя смелость немного упростить вашу логику c:

@echo off
setlocal enabledelayedexpansion

set "filesPerChunk=3"
set "fcount=0"
set idx=0

for /F "delims=" %%I in ('dir /a-d /b') do (
    REM echo Processing %%I
    set /a idx=idx %% filesperchunk +1
    if !idx! equ 1 set /a fcount+=1
    ECHO md File-!fcount! 2>nul
    ECHO move "%%I" "File-!fcount!\"
    REM pause
)

После проверки того, что вы делаете, удалите обе команды ECHO, чтобы фактически включить md и move команды.

Примечание: вы можете выбрать порядок сортировки ваших файлов с помощью переключателя /o. Подробнее см. dir /?.

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