我的所有移动设备照片和视频都备份到云端,并使用 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
。