フォルダ内の画像や動画を一括移動したり名前を変更したりするにはどうすればよいですか

フォルダ内の画像や動画を一括移動したり名前を変更したりするにはどうすればよいですか

モバイル デバイスのすべての写真とビデオはクラウドにバックアップされ、Dropbox の「カメラ アップロード」機能を使用してラップトップに同期されます。すべての写真とビデオは、Dropbox フォルダーの「カメラ アップロード」フォルダーに追加されます。

これらすべてをユーザー フォルダー内の [写真] フォルダーと [ビデオ] フォルダーに移動したいと考えています。私は Windows 8 を使用していますが、この質問は Windows 7 にも当てはまる可能性があります。

理想的には、写真をフォルダに移動したいですMy Pictures。写真は日付という名前のフォルダにあり、そのフォルダは年という名前のフォルダにある必要があります。たとえば、写真が2013年10月4日に撮影された場合は、My Pictures/2013/2013-10-04/

写真自体は、写真が撮影された日付と時刻に名前を変更し、必要に応じて元のファイル名を続けます。たとえば、写真が2013年10月4日14:05:07に撮影され、IMG003.jpgという名前だった場合、My Pictures/2013/2013-10-04/2013-10-04 14.05.07 IMG003.jpg

ビデオも同様に機能しますが、フォルダに保存されますMy Videos。たとえば、2013年10月1日17:03:01に撮影されたビデオは、My Videos/2013/2013-10-01/2013-10-01 17.03.01 VIDEO003.mpg

このプロセスを自動化できるアプリはありますか? または、バッチ ファイルを使用して実行できますか?

答え1

Powershell がプリインストールされている Windows 7/8 を使用していると仮定します。

この 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

関連情報