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

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

foma24 01-12-2012 20:47 2036662

Удаление jpg по разрешению
 
добрый день. Подскажите пожалуйста, есть папка wallpepers в нем соответственно jpeg файлы с разным расширением, нужно удалить все файлы у которых разрешение ниже 1680 x 1050, возможно ли это сделать средствами bat файлов ?

Iska 02-12-2012 06:15 2036882

foma24, напрямую — нет. Можете использовать WSH, например:
читать дальше »
Код:

Option Explicit

Dim strPath2Wallpapers
Dim lngHRes
Dim lngVRes

Dim objFile
Dim objImageFile


strPath2Wallpapers = "C:\Wallpapers"
lngHRes            = 1680
lngVRes            = 1050

With WScript.CreateObject("Scripting.FileSystemObject")
        If .FolderExists(strPath2Wallpapers) Then
                Set objImageFile = WScript.CreateObject("WIA.ImageFile")
               
                For Each objFile In .GetFolder(strPath2Wallpapers).Files
                        Select Case LCase(.GetExtensionName(objFile.Name))
                                Case "jpeg", "jpg", "jpe"
                                        With objImageFile
                                                .LoadFile objFile.Path
                                               
                                                If .Width < lngHRes Or .Height < lngVRes Then
                                                        WScript.Echo CStr(.Width) & "x" & CStr(.Height), vbTab, objFile.Name
                                                        'objFile.Delete True
                                                End If
                                        End With
                                Case Else
                                        ' Nothing to do
                        End Select
                Next
               
                Set objImageFile = Nothing
        Else
                WScript.Echo "Folder [" & strPath2Wallpapers & "] not found"
        End If
End With

WScript.Quit 0

NB! Для удаления раскомментируйте строку «'objFile.Delete True» (просто уберите апостроф «'»).

или PoSH.

foma24 02-12-2012 12:42 2036976

Запустил, пишет

C:\111.vbs(23, 7) WIA.ImageFile.1: Параметр задан неверно.

Iska 02-12-2012 12:53 2036989

foma24, значит, придётся дополнительно проверять, независимо от расширения, jpeg ли это. Попробуйте так:
читать дальше »
Код:

Option Explicit

Dim strPath2Wallpapers
Dim lngHRes
Dim lngVRes

Dim objFile
Dim objImageFile


strPath2Wallpapers = "C:\Wallpapers"
lngHRes            = 1680
lngVRes            = 1050

With WScript.CreateObject("Scripting.FileSystemObject")
        If .FolderExists(strPath2Wallpapers) Then
                Set objImageFile = WScript.CreateObject("WIA.ImageFile")
               
                For Each objFile In .GetFolder(strPath2Wallpapers).Files
                        Select Case LCase(.GetExtensionName(objFile.Name))
                                Case "jpeg", "jpg", "jpe"
                                        With objImageFile
                                                On Error Resume Next
                                               
                                                .LoadFile objFile.Path
                                               
                                                If Err.Number = 0 Then
                                                        On Error Goto 0
                                                       
                                                        If .Width < lngHRes Or .Height < lngVRes Then
                                                                WScript.Echo CStr(.Width) & "x" & CStr(.Height), vbTab, objFile.Name
                                                                'objFile.Delete True
                                                        End If
                                                Else
                                                        Err.Clear
                                                        On Error Goto 0
                                                       
                                                        WScript.Echo "Can't load file [" & objFile.Name & "]"
                                                End If
                                        End With
                                Case Else
                                        ' Nothing to do
                        End Select
                Next
               
                Set objImageFile = Nothing
        Else
                WScript.Echo "Folder [" & strPath2Wallpapers & "] not found"
        End If
End With

WScript.Quit 0



Цитата:

Цитата Iska
Для удаления раскомментируйте строку «'objFile.Delete True» (просто уберите апостроф «'»). »

— остаётся в силе.

kiripanda 02-12-2012 13:53 2037035

Код:

@echo off &setlocal enableextensions

set "folder=X:"

set /a minW=1680 &set /a minH=1050
set Iv="D:\***\i_view32.exe"

pushd %folder%
for /f "delims=" %%i in ('dir /b *.jpg *.jpeg') do (
        title %%i
        %Iv% "%%i" /info="%temp%\info.tmp"
        for /f "tokens=3,4 delims==x " %%a in (
        'findstr /c:"Image dimensions = " "%temp%\info.tmp"'
        ) do (set /a W=%%a &set /a H=%%b)
        call %ComSpec% /c if %%W%%. LSS %minW%. echo del /q "%%i"
        call %ComSpec% /c if %%H%%. LSS %minH%. echo del /q "%%i"
)
del /q "%temp%\info.tmp"
popd


foma24 02-12-2012 15:15 2037099

Всем спасибо, скрипт прекрасно работает. Небольшой вопрос, а возможно было сделать тоже самое на powershell и как бы выглядел скрипт ?


Время: 19:23.

Время: 19:23.
© OSzone.net 2001-