Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] как можно организовать скрытый поиск фото по модели камеры? (http://forum.oszone.net/showthread.php?t=190432)

UmbrellaMegaHack 06-11-2010 15:20 1536167

как можно организовать скрытый поиск фото по модели камеры?
 
как можно организовать скрытый поиск фото по модели камеры?

Iska 06-11-2010 16:48 1536235

Например, так:
читать дальше »
(для одной папки!, без вложенных)
Код:

Option Explicit

Const ForWriting = 2

Dim objShell
Dim objFolder
Dim objFolderItem

Dim objFSO
Dim objTS


Set objShell = WScript.CreateObject("Shell.Application")
Set objFolder = objShell.NameSpace("C:\My Pictures")

If Not objFolder Is Nothing Then
    Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
    Set objTS = objFSO.OpenTextFile("c:\ListOfFiles.txt", ForWriting, True)
   
    For Each objFolderItem In objFolder.Items
        If objFolder.GetDetailsOf(objFolderItem, 24) = "Canon PowerShot S2 IS" Then
            objTS.WriteLine objFolderItem.Path
        End If
    Next
   
    objTS.Close
   
    Set objTS        = Nothing
    Set objFSO        = Nothing
   
    Set objFolderItem = Nothing
    Set objFolder    = Nothing
End If

Set objShell = Nothing

WScript.Quit 0


NiOl 08-11-2010 21:59 1538033


Iska, начинаю потихоньку уважать vbs, (хотя все равно еще не готов повернуться к нему лицом) не знал, что винда сама может анализировать EXIF/IPTC...

Цитата:

Цитата Iska
"Canon PowerShot S2 IS" »

- помню была такая у моего друга, очень хорошая машинка!


из батника я пользую "ExifTool" (Phil Harvey)

пример использования с подкаталогами:
exiftool.exe -fast -S -r -Model *.\ - получаете просто список файлов и соответсвующую модель, если та указана, нужное занчение копируете в батник:
Код:

@Echo off
setlocal EnableExtensions
Set Camera=DiMAGE Z2
Set Tag=.&Set File=.
for /f "tokens=1,* delims=:" %%A in ('exiftool.exe -fast -S -r -Model .\') do call :GetModel "%%A" "%%B"
exit
:GetModel
set Tag=%~1
if "%Tag:~0,9%"=="======== " set File=%Tag:~9%
if "%Tag%"=="Model" if %2==" %Camera%" Echo %File:/=\%
exit /b


UmbrellaMegaHack 03-01-2011 16:47 1579841

Цитата:

Цитата Iska
Код:
Option Explicit
Const ForWriting = 2
Dim objShell
Dim objFolder
Dim objFolderItem
Dim objFSO
Dim objTS
Set objShell = WScript.CreateObject("Shell.Application")
Set objFolder = objShell.NameSpace("C:\My Pictures")
If Not objFolder Is Nothing Then
Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
Set objTS = objFSO.OpenTextFile("c:\ListOfFiles.txt", ForWriting, True)
For Each objFolderItem In objFolder.Items
If objFolder.GetDetailsOf(objFolderItem, 24) = "Canon PowerShot S2 IS" Then
objTS.WriteLine objFolderItem.Path
End If
Next
objTS.Close
Set objTS = Nothing
Set objFSO = Nothing
Set objFolderItem = Nothing
Set objFolder = Nothing
End If
Set objShell = WScript.CreateObject("Shell.Application") »



можно пример скрипта с подкатологами пожалуйста

Iska 09-01-2011 19:00 1584609

UmbrellaMegaHack, примерно так:
читать дальше »
Код:

Option Explicit

Const ForWriting = 2

Dim objShell
Dim objFolder
Dim objFolderItem

Dim objFSO
Dim objTS


Set objShell  = WScript.CreateObject("Shell.Application")
Set objFolder = objShell.NameSpace("C:\My Pictures")

If Not objFolder Is Nothing Then
    Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
    Set objTS  = objFSO.OpenTextFile("c:\ListOfFiles.txt", ForWriting, True)
   
    ScanSubFolders objFolder
   
    objTS.Close
   
    Set objTS    = Nothing
    Set objFSO    = Nothing
   
    Set objFolder = Nothing
End If

Set objShell = Nothing

WScript.Quit 0
'=======================================================

'=======================================================
Sub ScanSubFolders(objFolder)
    Dim objSubFolder
    Dim objFolderItem
   
    WScript.Echo "[" & objFolder.Self.Path & "]"
   
    For Each objFolderItem In objFolder.Items
        If objFolderItem.IsFolder Then
            Set objSubFolder = objFolderItem.GetFolder
           
            If Not objSubFolder Is Nothing Then
                ScanSubFolders objSubFolder
            End If
        Else
            If objFolder.GetDetailsOf(objFolderItem, 24) = "Canon PowerShot S2 IS" Then
                objTS.WriteLine objFolderItem.Path
            End If
        End If
    Next
End Sub
'=======================================================


P.S. В предыдущем скрипте исправлена очистка объектной переменной «objShell».
читать дальше »
С:
Код:

Set objShell = WScript.CreateObject("Shell.Application")
на:
Код:

Set objShell = Nothing

Vadikan 10-01-2011 03:58 1584992

А почему поиск должен быть скрытый? В Windows 7 все на виду :)



Ну и даже в ХР можно поставить Desktop Search.

Сорри за оффтоп :)

UmbrellaMegaHack 11-01-2011 14:49 1586131

Меня интересует скрытая автоматика)


Время: 14:20.

Время: 14:20.
© OSzone.net 2001-