私のモバイルデバイスの写真とビデオはすべてクラウドにバックアップされ、Dropboxの「カメラアップロード」機能を使用してラップトップに同期されます。すべての写真とビデオは、Dropboxフォルダーの「カメラアップロード」フォルダーに追加されます。
これらすべてをユーザーフォルダ内の写真とビデオのフォルダに移動したいと思います。私はWindows8を使用していますが、この質問はWindows7にも当てはまる可能性があります。
理想的には、写真をMy Pictures
フォルダーに移動します。写真はdateという名前のフォルダーにあり、そのフォルダーはyearという名前のフォルダーにある必要があります。たとえば、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
に移動されます。
このプロセスを自動化するために使用できるアプリはありますか、それともバッチファイルを使用して実行できますか?
PowershellがプリインストールされているWindows7/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
に置き換えることができます。