Скрипт для записи в HTML-файлы информации о файлах JPG

Обсуждение вопросов автоматизации Total Commander с помощью сторонних программ и скриптовых технологий.

Модераторы: Avada, CaptainFlint, Nik, d-view, Моторокер

Аватара пользователя
Yurbanizator
Сообщения: 26
Зарегистрирован: Ср дек 13, 2006 22:44

Скрипт для записи в HTML-файлы информации о файлах JPG

Сообщение Yurbanizator »

Друзья, прошу помощи!
Сам в скриптах не силен, а очень нужен для работы скриптик для обработки файлов по следующему алгоритму.

1. Скрипт получает имя директории как параметр.
2. Проверяет директорию на на наличие в нем файлов jpeg
3. Если такие файлы есть переименовывает их по порядку 1.jpg, 2.jpg, 3.jpg и т.д. до последнего файла
4. Создает соответствующие файлы html в этой же директории 1.html, 2.html, 3.html и т.д. для каждого файла jpg
5. В html файлы записывает имя соответствующего файла jpg и его высоту и ширину.
6. Сообщает об удачном окончании операции и количестве обработанный файлов jpg

На скриншоте №1 слева - исходная директория, справа - после выполнения скрипта.
На скриншоте №2 - файл 1.html созданный скриптом.

Заранее спасибо!

[mod="Avada"]Замечание за нарушение правил форума. Неформатные картинки заменены ссылками.[/mod]
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Код: Выделить всё

'================================================================
' Переименовать jpeg-файлы в активном каталоге на номер счётчика
' Создать рядом одноимённые html с записью размеров картинок

' Условие - путь запуска пустой
'================================================================
Dir = CreateObject("WScript.Shell").CurrentDirectory
Set Fd = CreateObject("Shell.Application").NameSpace(Dir) : Set Items = Fd.Items
Items.Filter 64, "*.jpg"
With CreateObject("Scripting.FileSystemObject")
  If Items.Count > 0 Then
    For Each F In .GetFolder(Dir).Files
      Ext = LCase(.GetExtensionName(F))
      If (Ext = "jpg" Or Ext = "jpeg") And Not IsNumeric(.GetBaseName(F)) Then
        i = i + 1 : Do While .FileExists(i & "." & Ext) : i = i + 1 : Loop
        .GetFile(F).Name = i & "." & Ext
        Size = CStr(Fd.GetDetailsOf(Fd.ParseName(F.Name), 31))
        x = InStr(Size, "x") : H = Left(Size, x - 2)
        .OpenTextFile(i & ".html", 2, True, -1).Write _
        "<h1> " & i & ".jpg </h1>" & vbNewLine & "height = <b> " & H &_
        " </b> " & vbNewLine & "width = <b> " & Mid(Size, x + 2) & " </b>"
      End If
    Next
  End If
End With : CreateObject("WScript.Shell").SendKeys "^R"
P.S.: И название темы надо бы на нормальное поменять - обработкой изображений тут не пахнет..
Последний раз редактировалось Flasher Сб дек 15, 2012 20:48, всего редактировалось 2 раза.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Аватара пользователя
Avada
Сообщения: 10541
Зарегистрирован: Пт авг 01, 2008 16:17
Откуда: Россия, Саратов

Сообщение Avada »

Flasher
Замечание верное. Название темы поменял (там хотя бы частично нужный функционал сейчас отражён).
Даже самая богатая фантазия
Не представит себе наши безобразия.
Аватара пользователя
Yurbanizator
Сообщения: 26
Зарегистрирован: Ср дек 13, 2006 22:44

Сообщение Yurbanizator »

Кладу скрипт в папку с изображениями. Запускаю. Вылетает ошибка.
При этом первое изображение обрабатывает.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Честно, сам в недоумении. :shock: Почему-то метод Write на 7-ке не хочет писать значения, возвращённые из стандартных функций.
В XP такого бреда нет.. Ещё подумаю.

Скрипт вешается элементарно на кнопку, в каждую папку с jpeg его класть не требуется. Тут обсуждаются скрипты для ТС.

Add: цифровые символы юникодные, оказывается.. Пишем html в Юникод, в общем. Поменял в скрипте.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Аватара пользователя
Yurbanizator
Сообщения: 26
Зарегистрирован: Ср дек 13, 2006 22:44

Сообщение Yurbanizator »

Заработал из папки с изображениями, супер!
Flasher писал(а):Скрипт вешается элементарно на кнопку, в каждую папку с jpeg его класть не требуется. Тут обсуждаются скрипты для ТС.
Да, это я прекрасно понимаю, мне он и нужен для ТС. :wink:
Повешал его на кнопку, параметр директории передаю "%P", не хочет работать. Может, что не так делаю?

Скрин http://joxi.ru/Z8xU9Ayq

Add: еще не ясен коммент в коде ' Условие - путь запуска пустой

Add2: Dir = CreateObject("WScript.Shell").CurrentDirectory - задает переменной Dir значение директории в которой лежит скрипт, поэтому он ищет изображения в своей директории...
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Yurbanizator писал(а):Может, что не так делаю?
В условиях скрипта где-то написано про параметры? Нет.
Yurbanizator писал(а):еще не ясен коммент в коде ' Условие - путь запуска пустой
В кнопке/юзеркоманде такое поле есть. Впервые сталкиваемся?
Yurbanizator писал(а):задает переменной Dir значение директории в которой лежит скрипт
Нет. Возвращает указанный путь рабочей папки, если его нет, то считывает путь активного каталога.

На будущее: надо не экспериментировать, а следовать описанию шапки..
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Аватара пользователя
Yurbanizator
Сообщения: 26
Зарегистрирован: Ср дек 13, 2006 22:44

Сообщение Yurbanizator »

Flasher
Гениально! все работает )
Спасибо. Сори за тупняк, впервые такое делаю.
berya
Сообщения: 46
Зарегистрирован: Вт ноя 15, 2011 22:20
Откуда: kiev

Сообщение berya »

Добрый вечер.
А как сделать чтобы в название включалось имя директории?


имеем aaa\xxx.jpg - получим aaa_01.jpg

Спасибо
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

:o Ни за что бы не подумал, что такой скрипт может ещё кому-то пригодиться..

А имена везде менять (jpg/html/в html) ?
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
berya
Сообщения: 46
Зарегистрирован: Вт ноя 15, 2011 22:20
Откуда: kiev

Сообщение berya »

На самом деле мне это скрипт был бы очень нужен в более расширенном виде - запись списка файлов в один HTML файл.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

berya
НЕ вижу связи со здешним скриптом. См. сюда.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
berya
Сообщения: 46
Зарегистрирован: Вт ноя 15, 2011 22:20
Откуда: kiev

Сообщение berya »

Связь: переименованием с последующей записью
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Т.е. переименовать список и записать его в один html? Коли так, то в любом случае оффтоп.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
berya
Сообщения: 46
Зарегистрирован: Вт ноя 15, 2011 22:20
Откуда: kiev

Сообщение berya »

переименовывать не список а JPG файлы. запись в один файл не критична, то есть оставляем исходный. Критично - имя файла по имени директории и нумерация должна быть минимум из 2 заков (01, 02, 03 ...)
Ответить