
Todas las fotos y videos de mi dispositivo móvil tienen una copia de seguridad en la nube y se sincronizan con mi computadora portátil mediante la función "Carga de cámara" de Dropbox. Todas las fotos y videos se agregan a la carpeta "cargas de cámara" en la carpeta de Dropbox.
Quiero moverlos todos a mis carpetas Fotos y Videos dentro de mi carpeta de usuario. Estoy usando Windows 8 pero esta pregunta también podría ser para Windows 7.
Idealmente quiero que las fotos se muevan a la My Pictures
carpeta. La foto debe estar en una carpeta llamada fecha y esa carpeta debe estar en una carpeta llamada año. Por ejemplo, si una foto fue tomada el 4 de octubre de 2013, debería estar enMy Pictures/2013/2013-10-04/
Se debe cambiar el nombre de la foto en sí a la fecha y hora en que se tomó y, opcionalmente, seguida del nombre del archivo original. Por ejemplo, si una foto fue tomada a las 14:05:07 del 4 de octubre de 2013 y se llamó IMG003.jpg, estaría enMy Pictures/2013/2013-10-04/2013-10-04 14.05.07 IMG003.jpg
Los videos funcionarían igual pero se colocarían en la My Videos
carpeta. Por ejemplo, un vídeo tomado a las 17:03:01 del 1 de octubre de 2013 se movería aMy Videos/2013/2013-10-01/2013-10-01 17.03.01 VIDEO003.mpg
¿Existe alguna aplicación que pueda usar para automatizar este proceso o podría hacerse usando un archivo por lotes?
Respuesta1
Suponiendo que utiliza Windows 7/8 donde Powershell está preinstalado.
Este script de Powershell copia archivos de una carpeta de origen ( $source
) a una carpeta de destino ( $dest
).
Usted filtra los archivos deseados con $filter
una matriz, por ejemplo, solo imágenes o videos.
- La nueva carpeta se cambia a
<destination_folder\old_subfolders\YYYY\YYYY-MM-DD>
- El nuevo nombre del archivo se cambia a
<YYYY-MM-DD hh.mm.ss oldfilename.extension>
Cada línea está comentada y no he utilizado alias a propósito.
### 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
}
Primero, pruebe el script con copy-item
el comando. Luego puedes reemplazar copy-item
con move-item
.