Показать полную графическую версию : [решено] Удаление jpg по разрешению
добрый день. Подскажите пожалуйста, есть папка wallpepers в нем соответственно jpeg файлы с разным расширением, нужно удалить все файлы у которых разрешение ниже 1680 x 1050, возможно ли это сделать средствами bat файлов ?
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.
Запустил, пишет
C:\111.vbs(23, 7) WIA.ImageFile.1: Параметр задан неверно.
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
Для удаления раскомментируйте строку «'objFile.Delete True» (просто уберите апостроф «'»). »
— остаётся в силе.
kiripanda
02-12-2012, 13:53
@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
Всем спасибо, скрипт прекрасно работает. Небольшой вопрос, а возможно было сделать тоже самое на powershell и как бы выглядел скрипт ?
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.