Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Удаление jpg по разрешению

Ответить
Настройки темы
CMD/BAT - [решено] Удаление jpg по разрешению

Старожил


Сообщения: 186
Благодарности: 0

Профиль | Отправить PM | Цитировать


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

Отправлено: 20:47, 01-12-2012

 

Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


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.
Это сообщение посчитали полезным следующие участники:

Отправлено: 06:15, 02-12-2012 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Старожил


Сообщения: 186
Благодарности: 0

Профиль | Отправить PM | Цитировать


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

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

Отправлено: 12:42, 02-12-2012 | #3


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


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» (просто уберите апостроф «'»). »
— остаётся в силе.
Это сообщение посчитали полезным следующие участники:

Отправлено: 12:53, 02-12-2012 | #4


Старожил


Сообщения: 352
Благодарности: 119

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
@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
Это сообщение посчитали полезным следующие участники:

Отправлено: 13:53, 02-12-2012 | #5


Старожил


Сообщения: 186
Благодарности: 0

Профиль | Отправить PM | Цитировать


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

Отправлено: 15:15, 02-12-2012 | #6



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Удаление jpg по разрешению

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Несоответствие отображаемой картинки заявленному разрешению Student00 Видео и аудио: обработка и кодирование 3 20-10-2008 11:45
качаем файл, только по разрешению... Drem Вебмастеру 5 21-07-2006 09:59




 
Переход