invisiblequantum
Goto Top

Mit Batch ein bestimmtes Bild suchen

Hay, ich hoffe ihr könnt mir weiterhelfen...

Folgendes:
Ich habe mehrere Ordner in denen verschiedene Dateien liegen, meistens .png Bilder.
Jetzt brauche ich einen passenden Befehl der ein Bild raussucht, das im Dateinamen "icon" stehen hat, eine Auflösung von 192x192 hat und im .PNG Format ist.
Wenn es mehrere Bilder gibt auf die, diese Angaben zutreffen, soll die Batch einfach irgendeine nehmen, oder einfach die mit der größten Dateigröße... ist eigentlich egal ^^. Anschließend soll diese eine Datei in das Verzeichnis kopiert werden, in dem die Batch liegt.

Ich weiß, scheint eine komplizierte Angelegenheit zu sein, aber ich denke, dass es gehn wird face-wink

PS: Ich bin noch Änfanger =)

Content-ID: 294119

Url: https://administrator.de/contentid/294119

Ausgedruckt am: 24.11.2024 um 22:11 Uhr

Friemler
Friemler 25.01.2016 um 09:49:56 Uhr
Goto Top
Moin,

teste mal folgendes:
@echo off & setlocal

set "FileNameMask=*icon*"  
set "FileType=png"  
set "ImgDims=192 x 192"  

set "SrcDir=%~1"  
set "DstDir=%~dp0"  
set "VBScript=%TEMP%\GetImgDimensions.vbs"  

> "%VBScript%" echo.Set objFSO   = CreateObject("Scripting.FileSystemObject")  
>>"%VBScript%" echo.Set objShell = CreateObject("Shell.Application")  
>>"%VBScript%" echo.  
>>"%VBScript%" echo.strFileFullName = objFSO.GetAbsolutePathName(WScript.Arguments(0))  
>>"%VBScript%" echo.strFileFolder   = objFSO.GetParentFolderName(strFileFullName)  
>>"%VBScript%" echo.strFileName     = objFSO.GetFileName(strFileFullName)  
>>"%VBScript%" echo.  
>>"%VBScript%" echo.Set objFolderItem = objShell.Namespace(strFileFolder).ParseName(strFileName)  
>>"%VBScript%" echo.strDimensions     = objFolderItem.ExtendedProperty("Dimensions")  
>>"%VBScript%" echo.strFileDimensions = Mid(strDimensions, 2, Len(strDimensions) - 2)  
>>"%VBScript%" echo.  
>>"%VBScript%" echo.WScript.Echo strFileDimensions  

for %%a in ("%SrcDir%\%FileNameMask%.%FileType%") do (  
  for /f "delims=" %%b in ('cscript /nologo "%VBScript%" "%%~a"') do (  
    if "%%b" equ "%ImgDims%" (  
      copy "%%~a" "%DstDir%%%~nxa" > NUL  
      goto :Done
    )
  )
)

:Done
del "%VBScript%"  

Du musst das Icon des Verzeichnisses, aus dem Du die PNG-Datei herauskopieren willst, mit der Maus auf das Icon der Batchdatei ziehen und dort fallen lassen (Drag&Drop).

Das Script kopiert die erste Datei, auf die alle Kriterien zutreffen.

Gruß
Friemler
InvisibleQuantum
InvisibleQuantum 25.01.2016 um 10:19:10 Uhr
Goto Top
Danke, ich werd's nachher mal testen. Brauche ich dafür VisualBasic /-Studio ?
Friemler
Friemler 25.01.2016 um 11:03:38 Uhr
Goto Top
Zitat von @InvisibleQuantum:

Brauche ich dafür VisualBasic /-Studio ?

Nein, dafür wird der VBScript-Scripthost von Windows verwendet. Der ist auf jedem Windows-System vorhanden. In Firmen wird er jedoch aus Sicherheitsgründen vom Admin manchmal deaktiviert.

Gruß
Friemler
InvisibleQuantum
InvisibleQuantum 26.01.2016 um 12:41:32 Uhr
Goto Top
Danke für die Info =)