Страница 1 из 5

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

Добавлено: Вс дек 09, 2012 19:07
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]

Добавлено: Пн дек 10, 2012 21:01
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.: И название темы надо бы на нормальное поменять - обработкой изображений тут не пахнет..

Добавлено: Пн дек 10, 2012 21:37
Avada
Flasher
Замечание верное. Название темы поменял (там хотя бы частично нужный функционал сейчас отражён).

Добавлено: Пн дек 10, 2012 22:28
Yurbanizator
Кладу скрипт в папку с изображениями. Запускаю. Вылетает ошибка.
При этом первое изображение обрабатывает.

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

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

Add: цифровые символы юникодные, оказывается.. Пишем html в Юникод, в общем. Поменял в скрипте.

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

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

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

Add2: Dir = CreateObject("WScript.Shell").CurrentDirectory - задает переменной Dir значение директории в которой лежит скрипт, поэтому он ищет изображения в своей директории...

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

На будущее: надо не экспериментировать, а следовать описанию шапки..

Добавлено: Вт дек 11, 2012 21:24
Yurbanizator
Flasher
Гениально! все работает )
Спасибо. Сори за тупняк, впервые такое делаю.

Добавлено: Вт дек 11, 2012 21:52
berya
Добрый вечер.
А как сделать чтобы в название включалось имя директории?


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

Спасибо

Добавлено: Вт дек 11, 2012 23:52
Flasher
:o Ни за что бы не подумал, что такой скрипт может ещё кому-то пригодиться..

А имена везде менять (jpg/html/в html) ?

Добавлено: Ср дек 12, 2012 00:14
berya
На самом деле мне это скрипт был бы очень нужен в более расширенном виде - запись списка файлов в один HTML файл.

Добавлено: Ср дек 12, 2012 00:21
Flasher
berya
НЕ вижу связи со здешним скриптом. См. сюда.

Добавлено: Ср дек 12, 2012 00:24
berya
Связь: переименованием с последующей записью

Добавлено: Ср дек 12, 2012 00:34
Flasher
Т.е. переименовать список и записать его в один html? Коли так, то в любом случае оффтоп.

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