
내 모바일 장치의 모든 사진과 비디오는 클라우드에 백업되고 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
.