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

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

Ответить
Настройки темы
CMD/BAT - [решено] Вставить имя файла в текстовый файл (UTF-8 without BOM)

Новый участник


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

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


Как бы сделать батник у которого входным параметром был путь до папки и делал он следующие:
Рекурсивно обходил все подпапки от заданной начальной, а также в ней самой для всех файлов с расширенем .mp3 .flac .ape .wv создавал (но не перезаписывал если такой уже есть) текстовой файл в той же папки и с таким же именем, но с расширением .apl и кодировкой UTF-8 without BOM (Dos\Windows). Плюс содержимое этого файла было следующие
Код: Выделить весь код
[Monkey's Audio Image Link File]
Image File=ИМЯ_ФАЙЛА.РАСШИРЕНИЕ
Start Block=0

----- APE TAG (DO NOT TOUCH!!!) -----
P.S. Если кому интересно таким образом можно сделать музыкальную библиотеку в foobar2000 которая будет иметь правильные теги (APEv2) не трогая саченных с торрента файлов (нужен только foo_input_monkey.dll). Можно прям в uTorrent вставить этот батник, чтоб он генерировал аплки когда докачает, и они автоматом добавлялись в библиотеку fb2k, в 3 секунды стянуть теги и вуаля мы и продолжаем сидировать и имеем правильные теги. Также apl позволяет указывать полный путь до файла, а хранить его в другом месте, но такой способ имеет ряд недостатков. Единственная загвоздка с image+сue раздачами, конечно можно добавить в батник проверка если файл только один и есть файл .cue то запустить или другой батник или програмку которая можно превращать cue в apl, но такого батника у меня нет, а единственная программа которая может это делать не может принимать параметров, да еще часто в одной папки лежать несколько image файлов. Так что с данным бат, будет просто создаваться ссылка на один длинный файл, через который можно попасть в папку добавить оттуда cue в foobar2000 и им разрезать на апл, благо такая возможность в нем есть и музыки в image формате появляется все меньше и меньше. Заранее спасибо.

Отправлено: 23:38, 17-09-2011

 

Старожил


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

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


Jahnhoy, могу предложить решение на WSH:
читать дальше »
Код: Выделить весь код
' Запуск:
' wscript.exe маршрут_скрипта обрабатываемая_папка1 [обрабатываемая_папка2] [...]

Option Explicit

Const EXT_FILTER = "*.mp3; *.flac; *.ape; *.wv"

If WScript.Arguments.Length Then
  Dim objShApp
  Dim objFSO
  Dim objOC
  Dim i
    Set objShApp = CreateObject("Shell.Application")
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objOC = CreateObject("OlePrn.OleCvt.1")
    For i = 0 To WScript.Arguments.Count - 1
      RecDirs objFSO.getfolder(WScript.Arguments.Item(i))
    Next
    Set objShApp = Nothing
    Set objFSO = Nothing
    Set objOC = Nothing  
End If

MsgBox "Скрипт отработал."

WScript.Quit

Sub RecDirs(sDir)
  Dim SubDir
  Dim arrFiles
  Dim i
    For Each SubDir In sDir.SubFolders
      RecDirs(SubDir)
    Next
    Set arrFiles = objShApp.NameSpace(sDir.Path).Items
    arrFiles.Filter 192, EXT_FILTER
    For i = 0 To arrFiles.Count - 1
      CreateAplFile arrFiles.Item(i).Path
    Next
End Sub

Sub CreateAplFile(fPath)
  Dim aplFile
  Dim aplFileName
    aplFileName = objFSO.GetParentFolderName(fPath) & "\" & objFSO.GetBaseName(fPath) & ".apl"
    If Not objFSO.FileExists(aplFileName) Then 
      Set aplFile = objFSO.CreateTextFile(aplFileName)
        aplFile.Write "[Monkey's Audio Image Link File]" & vbCrLf & _
                      "Image File=" & objOC.ToUtf8(fPath) & vbCrLf & _
                      "Start Block=0" & vbCrLf & vbCrLf & _
                      "----- APE TAG (DO NOT TOUCH!!!) -----"
      aplFile.Close
    End If
End Sub
Это сообщение посчитали полезным следующие участники:

Отправлено: 13:10, 18-09-2011 | #2



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

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


Новый участник


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

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


SendMessage, спасибо огромное вам, мне то всеравно, на чем, главное чтоб работал, только вот с ним есть небольшые проблемки почасти unicode'а. Во первых он создает файлы .apl в кодировки ANSI (по крайне мере так показывает notepad++) и выдает ошибку если встречает файлы по типу 01. Transe Amazônico.mp3. А во вторых ну это не ошибка конечно, но можно ли в "Image File=" вписывать не полный путь до файла, а только само название файла.

P.S. Может я неправильно поступил, но я дал скрипту расширение .vbs и сначала он мне выдавал ошибки, потом погуглил оказывается его надо сохранить в ANSI, а до этого он был в UTF-8, и не работал.

P.S.S. Я тут вручную поправлял все кодировки и точно убедился, что если в файлах присуствуют диакритические символы (а я любитель французкой музыки и таких файлов у меня очень много), то работает только с такой кодировкой в меню notepad++ она носит названее UTF-8 without BOM

Отправлено: 16:17, 18-09-2011 | #3


Старожил


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

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


Изображения
Тип файла: jpg n++.jpg
(32.3 Kb, 8 просмотров)

Цитата Jahnhoy:
Во первых он создает файлы .apl в кодировки ANSI (по крайне мере так показывает notepad++) и выдает ошибку если встречает файлы по типу 01. Transe Amazônico.mp3 »
Файл определится как utf-8 только при наличии символов >127. Ведь BOM в начале файла отсутствует, а символы 0-127 в utf-8 совпадают с ansi.
Кстати, я назвал у себя файл 01. Transe Amazônico.mp3 и все нормально (смотрите прикрепленный рисунок).
Цитата Jahnhoy:
А во вторых ну это не ошибка конечно, но можно ли в "Image File=" вписывать не полный путь до файла, а только само название файла. »
Замените строку
Код: Выделить весь код
"Image File=" & objOC.ToUtf8(fPath) & vbCrLf & _
на
Код: Выделить весь код
"Image File=" & objOC.ToUtf8(objFSO.GetFileName(fPath)) & vbCrLf & _

Последний раз редактировалось SendMessage, 18-09-2011 в 17:12.


Отправлено: 17:06, 18-09-2011 | #4


Новый участник


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

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


SendMessage, у вас на скриншоте, имя самого апл файла без этой ô. Я когда запускаю скрипт он сначало выдаёт это и в папке появляется 01. Transe Amazônico.apl, но совершенно пустой, затем я жму ок и он обрабатывает все остальные файлы нормлально.

P.S. Win 7 Enterprise SP1 EN но system codepage русская. 1.vbs имеет кодировку ANSI.

Отправлено: 17:49, 18-09-2011 | #5


Старожил


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

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


Jahnhoy,
Цитата Jahnhoy:
SendMessage, у вас на скриншоте, имя самого апл файла без этой ô. »
Внимательней смотрите - на вкладке написано имя файла. А в заголовке окна просто не поддерживается.

Цитата Jahnhoy:
Я когда запускаю скрипт он сначало выдаёт это »
Понятно. В семерке или нет файла oleprn.dll, или в нем нет соответствующей функции кодирования в utf-8.

Отправлено: 17:58, 18-09-2011 | #6


Новый участник


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

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


Вложения
Тип файла: rar APL test files.rar
(2.9 Kb, 7 просмотров)

SendMessage, действительно извините пожалуйста. Но тут чертовщина какая твориться. Проверял щас как на Win7 en так и на WinXP SP3 rus, создал папочку и начинал переименовывать файлы со всякими разными символами и так, на символах ô и ê выдают ошибку, а вот é É à ошибку не выдают, но скрипт все равно делает с é É à не рабочие апл в кодировки ANSI :-( может выложите ваш скрипт которые правильно сработал, мож это как то не так скопировал, а то ничего не могу понять, почему такая избирательность не рабочих символов.

UPD: Прикрепил архив с тестовыми файлами (обычные txt переименованные в Mp3 c разными именами) + сам скрипт. Итог моего теста абсолютно одинаковый на Win7_Enterprise_SP1_ENG и на WinXP_Proffesional_SP3_RUS создаются без ошибок только 3 апл файла (1,2 и 7 трек), но и они с нерабочей кодировкой ANSI.

Последний раз редактировалось Jahnhoy, 18-09-2011 в 19:19. Причина: добавление файла для теста


Отправлено: 18:15, 18-09-2011 | #7


Старожил


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

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


Изображения
Тип файла: png 18_09_2011.19-20-51.93.png
(3.6 Kb, 7 просмотров)

Цитата Jahnhoy:
Я когда запускаю скрипт он сначало выдаёт это и в папке появляется 01. Transe Amazônico.apl, но совершенно пустой »
Подтверждаю на WinXP SP3 rus
oleprn.dll ver. 5.1.2600.5512 (xpsp.080413-0852)

Отправлено: 19:22, 18-09-2011 | #8


Старожил


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

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


Вложения
Тип файла: rar apl & fb2k !.rar
(6.1 Kb, 10 просмотров)

Jahnhoy
Честно говоря, я в тупике. У меня никаких ошибок не выдает и создает все файлы нормально. Я прикрепил результат отработки по тестовой папке. Обрабатывалось присланным скриптом.
Все файлы notepad++ идентифицирует как "Encode in UTF-8 without BOM".

Ждите, когда прояснят ситуацию более компетентные люди.

Отправлено: 13:21, 19-09-2011 | #9


Новый участник


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

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


SendMessage, действительно все сделало как надо, скажите пожалуйста какая у вас система (и системная локализация) и версия этого oleprn.dll. Может это баг этой dll в новых версиях.

Отправлено: 13:43, 19-09-2011 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Преобразование кодировки файла utf-8 в Windows-1251 sea707 Скриптовые языки администрирования Windows 7 06-06-2011 08:32
CMD/BAT - [решено] как из bat файла дописать символ в текстовый файл? idzs Скриптовые языки администрирования Windows 6 22-02-2011 03:49
VBS/WSH/JS - Экспорт значений реестра в общий текстовый файл + добавление доп данных в этот файл fedko Скриптовые языки администрирования Windows 0 17-06-2010 11:52
Sharepoint - Как вставить имя пользователя в определённое поле maives Другие серверные продукты 0 09-11-2009 14:17
CMD/BAT - [решено] Изменение кодировки txt файла из ANSI в UTF-16 LE crashtuak Скриптовые языки администрирования Windows 11 20-08-2009 11:57




 
Переход