3

Все фотографии и видео моего мобильного устройства сохраняются в облаке и синхронизируются с моим ноутбуком с помощью функции "Загрузка камеры" Dropbox. Все фотографии и видео будут добавлены в папку "Загрузка камеры" в папке Dropbox.

Я хочу переместить все это в мои папки «Фото» и «Видео» в моей пользовательской папке. Я использую Windows 8, но этот вопрос также может быть для Windows 7.

В идеале я хочу, чтобы фотографии были перемещены в папку « My Pictures ». Фотография должна находиться в папке с именем даты, а эта папка должна находиться в папке с именем года. Например, если фотография была сделана 4 октября 2013 года, она должна быть в My Pictures/2013/2013-10-04/

Сама фотография должна быть переименована в дату и время, когда была сделана фотография, и, если необходимо, после нее должно быть указано имя файла. Например, если фотография была сделана в 14:05:07 4 октября 2013 года и называлась IMG003.jpg, она была бы в My Pictures/2013/2013-10-04/2013-10-04 14.05.07 IMG003.jpg

Видео будет работать так же, но будет помещено в папку « My Videos ». Например, видеоролик, снятый 1 октября 2013 г. в 17:03:01, будет перенесен в My Videos/2013/2013-10-01/2013-10-01 17.03.01 VIDEO003.mpg

Есть ли приложение, которое я мог бы использовать для автоматизации этого процесса, или это можно сделать с помощью командного файла?

1 ответ1

2

Предполагая, что вы используете Windows 7/8, где предустановлен Powershell.

Этот скрипт Powershell копирует файлы из исходной папки ($source) в папку назначения ($dest).
Вы фильтруете нужные файлы с помощью массива $filter , например, только изображения или видео.

  • Новая папка будет изменена на <destination_folder\old_subfolders\YYYY\YYYY-MM-DD>
  • Новое имя файла будет изменено на <YYYY-MM-DD hh.mm.ss oldfilename.extension>

Каждая строка комментируется, и я не использовал псевдонимы специально.

### set input folder
$source = "C:\My Dropbox\Camera Uploads"      

### set output folder
$dest = "C:\Users\<USERNAME>\My Pictures"

### set which file types to include/copy
$filter = @("*.png", "*.jpg", "*.jpeg")

### retrieve all files from source folder and pipe them to copy 
Get-ChildItem $source -include $filter -recurse | foreach {         

    ### build new destination folder string (syntax: destination folder + old subfolders + year + year-month-day)
    $destSub = $_.directoryname.Replace($source, $dest +'\'+ $_.CreationTime.Year +'\'+ $_.CreationTime.ToString("yyyy-MM-dd"))        
    $destSub

    ### check if new destination folder exists, otherwiese create new subfolder(s)
    if (-not (Test-Path -literalpath $destSub)) { New-Item $destSub -Type Directory }    

    ### build new file name string (syntax: new destination folder + year-month-date hours.minutes.seconds + oldname.extension)
    $destName = $destSub +'\'+ $_.CreationTime.ToString("yyyy-MM-dd hh.mm.ss") + ' ' + $_.name    
    $destName

    ### copy source file to new file name
    copy-item -literalpath $_.Fullname -destination $destName
    }

Сначала протестируйте скрипт командой copy-item . Позже вы можете заменить copy-item на move-item .

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