Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Ветеран


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

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


Rey71, на VBScript устроит?
Код: Выделить весь код
Option Explicit

Dim strSourceFolder

Dim objFSO
Dim objGFLAx


Set objFSO   = WScript.CreateObject("Scripting.FileSystemObject")
Set objGFLAx = WScript.CreateObject("GFLAx.GFLAx")

ScanSubFolders objFSO.GetFolder(WScript.CreateObject("WScript.Shell").CurrentDirectory)

Set objGFLAx = Nothing
Set objFSO   = Nothing

WScript.Quit 0

Sub ScanSubFolders(objFolder)
	Dim objFile
	Dim objSubFolder
	Dim strFilePath
	
	WScript.StdOut.WriteLine objFolder.Path
	
	For Each objFile In objFolder.Files
		Select Case LCase(objFSO.GetExtensionName(objFile.Name))
			Case "jpg", "jpeg", "jpe"
				WScript.StdOut.Write vbTab
				
				With objGFLAx
					.LoadBitmap(objFile.Path)
					
					If .Width < .Height Then
						WScript.StdOut.WriteLine "+ " & objFile.Path
						
						.Rotate -90
						
						.SaveJPEGQuality  = 95
						.SaveKeepMetadata = True
						
						strFilePath = objFile.Path
						objFile.Name = objFile.Name & ".bak"
						.SaveBitmap strFilePath
					Else
						WScript.StdOut.WriteLine "- " & objFile.Path
					End If
				End With
			Case Else
				' Nothing to do
		End Select
	Next
	
	For Each objSubFolder In objFolder.SubFolders
		ScanSubFolders objSubFolder
	Next
End Sub
Работает под cscript.exe (из-за прямого вывода — для красоты — в StdOut). Единственное, что мне не нравится — работа с текущим каталогом, а не с заданным параметром скрипта. Ну, да ладно.

Обычно же такие вещи реализуют посредством ImageMagick.
Это сообщение посчитали полезным следующие участники:

Отправлено: 13:39, 06-07-2018 | #2