То есть Вы предлагаете вместо выполнения задачи в ОДИН шаг выполнять ее за ДВА шага? А в чём скрытый смысл? Неужели возможности wdxInfoPacker как скриптового языка превышают таковые у cmd/VBScript/Jscript и т.д. То есть он может не только извлекать данные, но и обрабатывать их? Например, переместить в отдельную папку все мп3 файлы с тегом "Year" = 1990 и битрейтом от 64 до 128 кб/с (и это только как пример)?Lev писал(а):wdxInfoPacker может сгенерировать любой текстовый файл с использованием имён файлов и информации из контентных плагинов. Расширение файла может задаваться. Т.е. мы можем сгенерировать батник с кучей строк типаЭто как?
move "путь\имя файла" "папка с именем из тегов файла"
или скрипт с подобным содержимым. А потом запустить его вручную. Мне это было без надобности, но если надо могу попробовать накидать пример.
Сортировка mp3 по каталогам с учётом id3 тегов
Модераторы: Avada, CaptainFlint, Nik, d-view, Моторокер
wdxInfoPacker - не язык, а архиваторный плагин, который может генерировать тексты-скрипты(cmd/VBScript/Jscript/Python/Perl/и т.д. и т.п.)-html-xml-всёчтовысаминапишете. Выполнение, просмотр, другая обработка результата - второе действие.Неужели возможности wdxInfoPacker как скриптового языка...
[off]А зачем Вы целиком процитировали моё сообщение? Я на память не жалуюсь.[/off]
ps Больше в теме "Сортировка mp3 по каталогам с учётом id3 тегов." писать не буду, пока темы не разделят.
Вот я о том и пишу, что он может только писать информацию из wdx-плагинов в файл, никак её не обрабатывая. В то время как я предлагаю обойтись без лишнего шага, сразу в батнике манипулируя нужными данными. Вот сегодня свежий пример:Lev писал(а):wdxInfoPacker - не язык, а архиваторный плагин, который ...
Я вчера накачал несколько деcятков книг с инфанаты на дом. комп (далее ДК), потом перекинул их все на флешку (далее ФЛ), с целью сегодня на работе просмотреть. Придя на работу, я перекинул их с ФЛ на рабочий комп (далее РК). Просматривая их на РК, я попутно переименовывал файлы, с целью привести их к удобочитаемому виду (мне например, больше нравится название файла в виде Языки программирования С и С++.pdf, чем Saburov_S._Yazyki_programmirovaniya_C_i_C_pdf.pdf), и удалял те файлы, которые оказались мне не нужны. Итого, что мы имеем:
1. РК - файлы переименованы так, как мне надо (ненужные файлы стёрты).
2. ФЛ - непереименованные файлы (так, как были скачаны с нета).
3. ДК - то же, что и в пункте 2.
Естественно, опять вручную переименовывать для ФЛ и ДК не хочется (да и замахаюсь я переименовывать, если их будут сотни), поэтому возникла идея припахать для этой цели утиль (так как wdxInfoPacker тут нам не помощник) то есть переименовать их на ФЛ именами с РК а придя домой, переименовать на ДК именами с ФЛ (тут, кстати, и тоталовская синхронизация директорий нам не поможет). В принципе, теоретически тут достаточно и простого батника (без дополнительных утилей), если ориентироваться на размер файла, но гораздо надёжнее ориентироваться на хеши.
TagScanner
Если не привязываться к TC, то рекоммендую TagScanner
Процесс движется. Готово примерно 70% (если это кому-то интересно).Samwatas писал(а):Я сейчас обдумываю концепцию новой утилиты, которая будет и читать и писать и выводить отладочную информацию и т.д.. В общем есть у меня парочка интересных идей, осталось их реализовать в коде.
Пишу я не утилиту, а библиотеку UDF функций (поклонники АвтоИта меня поймут). Пока написаны следующие функции:
_UDF_WDX_GetFieldIndexByName($sWDXPlugName, $sFieldName) - Получение Индекса по Имени Поля (плагописатели поймут, о чём речь - ).
_UDF_WDX_GetFieldNameByIndex($sWDXPlugName, $iFieldIndex) - наоборот (на всякий пожарный).
_UDF_WDX_GetUnitsArray($sWDXPlugName, $iFieldIndex) - получаем массив of Units),
_UDF_WDX_GetReturnedValueType($sWDXPlugName, $iFieldIndex, $iString = 0) - тип возращаемого значения (например ft_numeric_32, ft_string и т.д.)
_UDF_WDX_IsGetANSISupported($sWDXPlugName) - проверка наличия функции ContentGetValue)
_UDF_WDX_IsGetUNICODESupported($sWDXPlugName) - проверка наличия функции ContentGetValueW)
_UDF_WDX_IsSetANSISupported($sWDXPlugName) - проверка наличия функции ContentSetValue)
_UDF_WDX_IsSetUNICODESupported($sWDXPlugName) - проверка наличия функции ContentSetValueW)
_UDF_WDX_Info($sWDXPlugName, $iString = 0) - возвращает двухмерный массив всех полей плагина, их типа, и их Units.
Самые интересные функции сейчас в процессе написания. Это:
_UDF_WDX_GetValue($sWDXPlugName, $sFileName, $iFieldIndex, $iUnitIndex=0) - чтение конкретного значения.
_UDF_WDX_SetValue($sWDXPlugName, $sFileName, $iFieldIndex, $sValue, $iUnitIndex=0) - запись конкретного значения.
С типами ft_numeric_хх, ft_string и некоторыми другими всё ясно. Гораздо интереснее, что делать с типами ft_date, ft_time и некоторыми другими - их нужно приводить в форматированный вид - но как лучше? Фиксированный вид типа YYYY-MM-DD или в зависимости от региональных настроек (а это может быть и MM/DD/YYYY например, если установлены американские региональные настройки.). Так что подумать есть над чем.
П.С. Консольную утилиту можно будет потом сделать без труда (на базе этой библиотеки), если в этом у кого-то возникнет потребность.
Продолжение в отдельном топике - http://forum.wincmd.ru/viewtopic.php?t=13510.