Как я могу скопировать каждый 4-й файл в папке в новую папку?

Я экспортирую анимацию в виде файлов изображений PNG. Из 1199 экспортированных последовательностей кадров только каждый 4-й файл содержит ключевой кадр, остальные файлы изображений являются точными копиями предыдущего.

Как я могу скопировать только 4-й файл в новую папку?

file-20000.png - Copy
file-20001.png - Duplicate of file-20000
file-20002.png - Duplicate of file-20000
file-20003.png - Duplicate of file-20000
file-20004.png - Copy
file-20005.png - Duplicate of file-20004
file-20006.png - Duplicate of file-20004
file-20007.png - Duplicate of file-20004
file-20008.png - Copy

2 ответа

Решение

Используйте цикл FOR /L и установите начало 0, шаг к 4 и конец 1200 что на один больше, чем 1199 числовые последовательности частей имени файла, которые вам нужны только для копирования четвертого файла.

Это будет повторять числа, начиная с 0 собирается из 0, 4, 8, .... 1196 считая на 4, вы можете добавить повторяющееся значение в виде строки, объединенной в пределах части имени файла вместе с маской с подстановочными знаками и использовать ее с xcopy для соответствующего копирования каждого 4-го файла.


Пакетный скрипт

Примечание. Эта логика предполагает, что имена файлов всегда начинаются с "file-2" и всегда заканчиваются порядковыми номерами непосредственно перед точкой перед расширением. png (т.е. <SeqNum>.png )

@ECHO ON

SET SrcDir=C:\folder\src
SET DestDir=C:\folder\dest
SET fNamePart=file-2
SET ext=png

FOR /L %%a IN (0, 4, 1200) DO (
    ECHO F | XCOPY /Y /F "%SrcDir%\%fNamePart%*%%a.%ext%" "%DestDir%\"
    )

PAUSE
EXIT

Дополнительные ресурсы

  • FOR /L

    FOR /L %variable IN (start,step,end) DO command [command-parameters]
    
        The set is a sequence of numbers from start to end, by step amount.
        So (1,1,5) would generate the sequence 1 2 3 4 5 and (5,-1,1) would
        generate the sequence (5 4 3 2 1)
    
  • XCOPY

Если все файлы, которые вы хотите иметь Copy в их именах, и все файлы, которые вы не хотите, не имеют Copy в их именах, то вы можете использовать *Copy* , как в

 копировать * копировать * DestinationDirectory 
или использовать *copy* , поскольку Windows нечувствительна к регистру. Если все файлы, которые вы хотите иметь Copy в конце их имен вы можете использовать *Copy вместо этого (оставив * в конце). Вы можете использовать шаблоны имен файлов в проводнике Windows, набрав file:*copy* в поле поиска.

Другие вопросы по тегам