3

Я использую Windows 10 и работаю с несколькими камерами. Я собираюсь использовать пример, чтобы лучше объяснить.

пример

Я снимался на 6 камерах, которые снимали одну и ту же сцену одновременно. Я снимаю отснятый материал и в итоге получаю 6 отдельных папок (папка на камеру), и у каждой папки есть одинаковое количество снимков или "дублей".

"Взятия" камеры нумеруются последовательно, хотя каждая камера имеет свое индивидуальное имя. Файлы в папке Camera A могут называться GOPR0023, GOPR0024, GOPR0025, тогда как файлы в папке Camera B могут называться GOPRO0111, GOPR0112, GOPRO0113.

Мне бы хотелось

Затем я хочу создать папки для каждого "дубля" ... например, папки ~\Take1 , которая включает "дубль 1" с камер A, B, C, D, E, F и т.д.

Как я могу сделать это с наименьшими усилиями в Windows 10? Когда у меня есть 6 папок с фотокамерой по 20 снимков в каждой, это требует времени, чтобы сделать это вручную.

По сути, мне нужен инструмент, который берет первый файл (дубль 1) из каждой папки камеры, который вырезает и вставляет их в новую папку, и повторяет (следующий последовательный дубль / файл), пока не останется ни одного файла.

2 ответа2

1

Скопируйте последовательные файлы из нескольких папок в новую папку (Win 10)

Я снимался на 6 камерах, которые снимали одну и ту же сцену одновременно. Я снимаю отснятый материал и в результате получаю 6 отдельных папок (папка на камеру), и у каждой папки есть одинаковое количество снимков или "дублей". Затем я хочу создать папки для каждого "дубля" ... например, "Папка дубля 1", которая включает дубль 1 с камеры A, B, C, D, E, F и т.д.

Ниже приведены два примера того, как завершить то, что вы заявляете в своем вопросе, и которое было подтверждено, как вы объясняете в моей тестовой среде.

Один сценарий НЕ удалит исходные дубли или файлы из каждой из 6 исходных папок камеры, а другой удалит исходные дубли - я не был уверен, хотите ли вы удалить исходные дубли впоследствии или нет, поэтому я предоставил один с и один без.

Вам нужно будет подключить переменные для ваших нужд в логике пакетного сценария приведенных ниже примеров. Вы сохраните их в текстовом документе (т.е. все в одном из тех, которые вы решите использовать - хотя каждый из них представляет собой отдельный скрипт / текстовый файл), а затем назовете его <something>.cmd . Как только это файл с именем cmd и ваши переменные подключены, достаточно просто дважды щелкнуть его, чтобы запустить то, что вы просите.

Переменные Примечания

Я добавил комментарии к пакетным сценариям, разъясняющие переменные, которые вам нужно установить (только переменные), и имена папок для первого цикла FOR, но для уточнения:

  • Если он указан как SET CameraRootDir= его необходимо установить равным полному корневому каталогу, где ВСЕ папки камеры существуют. Предполагается, что они находятся в одной и той же стандартной папке, и оттуда у всех есть свои собственные папки, такие как CameraA , CameraB и так далее.
  • Если он указан как SET TakeRootDir= его необходимо установить равным папке полного пути, где вы хотите, чтобы существовали папки Take1 , Take2 , Take3 и т.д.
  • Где вы видите логику FOR %%C IN ( чуть ниже) вы увидите перечисленные ниже элементы CameraA , CameraB и т.д. Каждое из них будет соответствовать ОДНОМУ имени папки, ТОЛЬКО где каждая камера # будет именем одного и только уникальных имен папок под родительской папкой, в которой все они существуют. Просто замените каждый из тех , с именами папок камеры , где принимает или последовательные файлы являются saved- ОСТАВИТЬ запятых , хотя.

    CameraA,CameraB,CameraC, 
    CameraD,CameraE,CameraF
    
  • Если папки вашей камеры расположены в корне диска "C" как C:\CameraA , C:\CameraB и т.д. , То вы должны быть уверены, что SET CameraRootDir=C:\ просто так, так что он будет равные C:\ и приведенные выше имена папок (над пунктами с кавычками), которые вы перечисляете в этой части логики, будут перебирать шестерку в случае, если это поможет прояснить; в противном случае полный путь (если не ROOT диска "C") будет папкой PARENT\ROOT, содержащей эти папки.

  • Также предполагается, что ПЕРВЫМ снимком или файлом изображения в каждой уникальной папке камеры будет Take1 а следующий после этого Take2 и так далее в этом последовательном порядке, так что теперь у меня есть логика, установленная в следующих примерах.

Другие заметки

Пожалуйста, уделите немного времени и посмотрите здесь (Принятие ответа), чтобы ознакомиться с принятием ответов по Super User и другим сообществам Stack Exchange по этому вопросу. Если это работает для ваших нужд, то благодарность будет принята за ответ.

Пакетный скрипт без удаления

@ECHO ON
::: --// The CameraRootDir variable is the root level variable just beneath each separate camera folder name
::: --// The TakeRootDir variable will be the folder location just beneath take1, take2, and so on will be created
SET CameraRootDir=C:\Path\Cameras
SET TakeRootDir=C:\Path\CopiedTakes
IF NOT EXIST "%TakeDir%" MD "%TakeDir%"

::: --// Each item below separate by a comma is the camera folder names just beneath the root level name
::: --// You will need to replace these entries with the actual camera folder name for each of your 6 cameras
FOR %%C IN (

    CameraA,CameraB,CameraC,
    CameraD,CameraE,CameraF

) DO (

    SET TakeCount=0 
    CALL :CAMERA_MODE "%%~C"

)
GOTO EOF

:CAMERA_MODE
SET CameraDir=%CameraRootDir%\%~1
FOR /F "TOKENS=*" %%T IN (

    '"DIR /B /A-D /OD "%CameraDir%\""'

) DO (

    CALL :TakeMove "%%~T" "%~1"

)
GOTO EOF


:TakeMove
SET /A TakeCount=%TakeCount%+1
IF NOT EXIST "%TakeRootDir%\Take_%TakeCount%" MD "%TakeRootDir%\Take_%TakeCount%"
ECHO F | XCOPY /F /Y "%CameraDir%\%~1" "%TakeRootDir%\Take_%TakeCount%\%~2_%~1"
GOTO EOF

Пакетный скрипт с удалением

@ECHO ON
::: --// The CameraRootDir variable is the root level variable just beneath each separate camera folder name
::: --// The TakeRootDir variable will be the folder location just beneath take1, take2, and so on will be created
SET CameraRootDir=C:\Path\Cameras
SET TakeRootDir=C:\Path\CopiedTakes
IF NOT EXIST "%TakeDir%" MD "%TakeDir%"

::: --// Each item below separate by a comma is the camera folder names just beneath the root level name
::: --// You will need to replace these entries with the actual camera folder name for each of your 6 cameras

FOR %%C IN (

    CameraA,CameraB,CameraC,
    CameraD,CameraE,CameraF

) DO (

    SET TakeCount=0 
    CALL :CAMERA_MODE "%%~C"

)
GOTO EXIT

:CAMERA_MODE
SET CameraDir=%CameraRootDir%\%~1
FOR /F "TOKENS=*" %%T IN (

    '"DIR /B /A-D /OD "%CameraDir%\""'

) DO (

    CALL :TakeMove "%%~T" "%~1"

)
GOTO EOF


:TakeMove
SET /A TakeCount=%TakeCount%+1
IF NOT EXIST "%TakeRootDir%\Take_%TakeCount%" MD "%TakeRootDir%\Take_%TakeCount%"
ECHO F | XCOPY /F /Y "%CameraDir%\%~1" "%TakeRootDir%\Take_%TakeCount%\%~2_%~1"
DEL /Q /F "%CameraDir%\%~1"
GOTO EOF

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

0

если вы не хотите устанавливать или кодировать инструмент:

  • выполнить поиск по дереву в проводнике
  • отсортировать результат соответственно
  • выберите и перетащите файлы, которые принадлежат друг другу в их целевой директории.

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

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