
En mi máquina principal con Windows 10, tomo muchas capturas de pantalla de videojuegos con Steam. Dentro de la carpeta de capturas de pantalla de Steam ( Steam\userdata\<user_id>\760\remote
), crea una nueva carpeta para cada juego, que a su vez contiene una screenshots
carpeta que luego contiene las capturas de pantalla que has tomado.
Una vez hice una copia de seguridad de estas capturas de pantalla en Google Photos. Para poder cargar las capturas de pantalla con la fecha correcta, utilicé exiftool para configurar la propiedad "Fecha de toma" en todos los archivos de imagen que existían en ese momento.
No eliminé estos archivos después de subirlos, ya que todavía quiero que Steam los reconozca.
Desde entonces, he tomado más capturas de pantalla y quiero cargar estas nuevas sin volver a cargar las que ya se cargaron (Google las reconocerá como duplicadas, pero sigue siendo una pérdida de ancho de banda y tiempo con 165 carpetas y decenas). de miles de imágenes).
La única diferencia que se me ocurre entre las nuevas capturas de pantalla y las subidas anteriormente es que a las nuevas les faltará la propiedad "Fecha de toma". No tengo a mano la fecha en la que subí el último lote y, aunque tal vez pueda obtenerla de Google Photos, prefiero no hacerlo.
¿Hay alguna forma de buscar recursivamente en una carpeta de nivel superior archivos a los que les falta una propiedad específica?
Respuesta1
Pude encontrar una pregunta similar que me ayudó a descubrir cómo hacerlo.
Obtenga los atributos enumerados en la pestaña "Detalles" con Powershell
La respuesta a esa pregunta enlaza con un blog de desarrollo de Microsoft en el que el autor vincula un script y explica cómo usarlo para obtener propiedades de una lista recursiva de archivos.
Enumere los metadatos del archivo de música en un CSV y ábralo en Excel con PowerShell
Los pasos exactos que tomé fueron los siguientes:
- Descargado elObtener-FileMetaDataReturnObject.ps1guionde la galería TechNet.
- En una ventana de Powershell con privilegios de administrador, me di permiso para ejecutar scripts sin firmar usando el comando
Set-ExecutionPolicy Unrestricted
. - Cargué el script en la memoria usando el comando
C:\Users\<username>\Desktop\Get-FileMetaDataReturnObject.ps1
. - Creé un objeto que contenía todas las propiedades de metadatos para cada carpeta y archivo en la carpeta de capturas de pantalla con el comando
$fileMeta = Get-FileMetaData -folder (gci "C:\Program Files (x86)\Steam\userdata\<user_id>\760\remote" -Recurse -Directory).FullName
.Esto tardó tres horas en completarse en mi máquina. - Luego exporté las propiedades específicas que necesitaba usando el comando
$fileMeta | select Path, Kind, "Date taken" | Export-Csv -Path "C:\Users\<username>\Desktop\screenshots.csv" -Encoding ASCII -NoTypeInformation
. - En Notepad++, marqué todas las líneas que contenían la palabra
thumbnails
(para ignorar la subcarpeta de miniaturas generada automáticamente que creó Steam),Folder
(para ignorar las carpetas en general) y,"?
(por alguna razón, parece que Powershell no pudo analizar correctamente las fechas y las agregué un signo de interrogación al principio de cada uno, pero esto me ayudó a filtrar fácilmente los valores nulos) y los eliminé. - Luego me quedé con una lista de archivos de los que era necesario hacer una copia de seguridad en Google Photos.
Probablemente sería más fácil conservar la última fecha de carga y usar el comando de búsqueda de Windows datecreated: d/m/yyyy .. d/m/yyyy
(rango entre la última fecha de carga y ahora, usando el formato australiano), pero cualquiera de los métodos requiere un poco de manipulación para filtrar cosas que no necesita, como miniaturas, manteniendo la organización (es decir, de qué juego es cada captura de pantalla).