
Tengo 14.000 fotografías clasificadas en archivos por año y mes, pero tomadas con varias cámaras. Quiero que el nombre del archivo refleje la fecha en que se tomó la foto.
Por ejemplo, todas las fotografías tomadas el 16 de octubre de 1998 están en una carpeta llamada 1998\10 October\19981016
.
Quiero que todas las imágenes se llamen 19981016_0001 19981016_0002, etc.
Puedo llegar al punto en el que aparece una lista de la carpeta que quiero cambiar pero no puedo cambiarla. Todas mis fotos son .jpg.
Creé un archivo temporal de copias en caso de que lo estropeara. Empecé escribiendo:
cd "C:\Documents and Settings\Brooke LastName\Desktop\Temp"
luego, después de cargar exitosamente mi archivo, utilicé una fórmula que encontré en este foro.
ls *jpg | Foreach {$i=1} {Rename-Item _ -NewName ("$($.19981016){0:00000000#} .jpg" -f $i++) -whatif}
El error que me salió decía
Unexpected token ' .19981016' in expression or statement.
At line:1 char:12 + $.19981016 <<<<
El error se repitió varias veces.
Encontré varias fórmulas en la web, pero la mayoría creó archivos que se numeraban entre paréntesis, por ejemplo, vacaciones (1).jpg. Quiero un contador de cuatro dígitos después de un guión bajo al final de mi fecha. es decir, 19981016_0001
Respuesta1
Creo que modificaste la fórmula y cometiste al menos dos errores:
Rename-Item $_
-> de lo contrario, PowerShell intentará cambiar el nombre del archivo llamado "_""$($_.Directory.Name)_{0:D9}.jpg" -f $i++
- necesita tomar el nombre del directorio del objeto actual y para formatear - es más fácil usar el formato D#, más fácil contar cuántos dígitos obtiene al final...