Ayuda para buscar en carpeta imagen Jpg si existe

Esta sección es para preguntas sobre programación/scripting usando AutoHotkey.

Moderator: Flipeador

PepeViyuela
Posts: 30
Joined: 06 Sep 2022, 12:04

Ayuda para buscar en carpeta imagen Jpg si existe

Post by PepeViyuela » 12 Oct 2022, 02:38

Ayuda para buscar imagen Jpg si existe en carpeta
Hola, en una carpeta tengo infinidad de carpetas, cada carpeta deberia de contener una imagen con nombre Folder.Jpg
No consigo hacer un Script que al ejecutarlo me indique en que carpetas falta la imagen Folder.Jpg

Saludos.

garry
Posts: 3795
Joined: 22 Dec 2013, 12:50

Re: Ayuda para buscar en carpeta imagen Jpg si existe

Post by garry » 12 Oct 2022, 10:15

ejemplo

Code: Select all

#warn
setworkingdir,%a_scriptdir%
e1:="",e2:="",found:="NO"
;-
searchfor:="MyTest"                ;- name from jpg file for search
folder:="C:\test"                  ;- search in this folder
;-
Loop, Files, %folder%\*.jpg,F        ;- loop for jpg files in main folder
     {
     If InStr(a_loopfilefullpath,searchfor)  ;- search for %searchfor%
	   {
       e1 .= folder . "`r`n"          ;- main folder contains file with %searchfor%
	   found=Y1
	   break
	   }
	 }  
  if (found="NO")
    e2 .= folder . "`r`n"                ;- NOT found in this folder %folder%


Loop, Files, %folder%\*.*, DR      ;- loop for folders
  {
  fd:=a_loopfilefullpath
  Loop, Files, %fd%\*.jpg,F        ;- loop for jpg files in folder
     {
     If InStr(a_loopfilefullpath,searchfor)  ;- search for %searchfor%
       {
       e1 .= fd . "`r`n"          ;- folder contains file with %searchfor%
	   found=yes
	   }
	 }
  if (found="yes")
    {
    found=No
	continue
    }	
  e2 .= fd . "`r`n"                ;- NOT found in these folders
  }	
aa=Found "%searchfor%" in these folders=`n------------------`n%e1%`n`nNOT found "%searchfor%" in these folders=`n------------------`n%e2%  
msgbox,%aa%
;fileappend,%aa%,test55.txt,utf-8
return
;============================================
/*
Found "MyTest" in these folders=
------------------
C:\test\Folder2
C:\test\Folder2\Subfolder2
C:\test\Folder3\Subfolder31


NOT found "MyTest" in these folders=
------------------
C:\test
C:\test\Folder1
C:\test\Folder3
C:\test\Folder3\Subfolder31\SubSubfolder31
*/
;==============================================


PepeViyuela
Posts: 30
Joined: 06 Sep 2022, 12:04

Re: Ayuda para buscar en carpeta imagen Jpg si existe

Post by PepeViyuela » 13 Oct 2022, 03:07

Thank you very much garry, it works perfectly.

Best regards.

gmoises
Posts: 75
Joined: 18 Nov 2017, 16:43

Re: Ayuda para buscar en carpeta imagen Jpg si existe

Post by gmoises » 17 Dec 2022, 17:08

Code: Select all

Carpeta := "E:\Gabriel\Pictures\Bonitos"
Archivo := "Prueba.jpg"
Todas := []
Existen := []									; para las carpetas que contengan al Archivo

; saber todas las carpetas
Loop, Files, % Carpeta . "\*.*", DR					; D = buscar carpetas, R = Recurse subCarpetas
	Todas.Push(A_LoopFileLongPath)

; saber que carpetas contienen el Archivo
Loop, Files, % Carpeta . "\" . Archivo , FR				; F = buscar archivos, R = Recurse subCarpetas
	Existen.Push(A_LoopFileDir)

; calcular las carpetas que no contienen el archivo		
For Ix, Carpeta in Todas
{
	Está := False
	For Iy, Folder in Existen
		If (Carpeta = Folder)
			Está := True
	If !Está
		Faltan .= Carpeta . "`n"
}

; Listar las carpetas donde no está Archivo
MsgBox % Faltan

garry
Posts: 3795
Joined: 22 Dec 2013, 12:50

Re: Ayuda para buscar en carpeta imagen Jpg si existe

Post by garry » 19 Dec 2022, 04:20

@gmoises , gracias , buscar también en la carpeta principal , espero que esté bien

Code: Select all

Carpeta :="D:\M_MEDIA\M_FOTO"
Archivo := "Selina2018"
Todas   := [],Existen :=[]
;--
Loop, Files, % Carpeta . "\" . Archivo . "*.*",F     ;- F = buscar archivos in carpeta principal
	Todas.Push(A_LoopFileDir)
Loop, Files, % Carpeta . "\*.*", DR	                 ;- D = buscar carpetas, R = Recurse subCarpetas
	Todas.Push(A_LoopFileLongPath)
Loop, Files, % Carpeta . "\" . Archivo . "*.*" , FR  ;- F = buscar archivos, R = Recurse subCarpetas
	Existen.Push(A_LoopFileDir)
For Ix, Carpeta in Todas
{
	Está := False
	For Iy, Folder in Existen
		If (Carpeta = Folder)
			Está := True
	If Está
		NoFaltan .= Carpeta . "`n"
	else
   	    Faltan   .= Carpeta . "`n"
}
msgbox, 262144,Buscar %archivo% en la carpeta ,Search for =%archivo%`n------`ncontains in folder= `n-------`n %NoFaltan%`n-----------`nNot contains in folder = `n%faltan%
exitapp

Post Reply

Return to “Pedir Ayuda”