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

Компьютерный форум 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:
скажите пожалуйста какая у вас система (и системная локализация) и версия этого oleprn.dll. »
win xp pro sp2 rus
oleprn.dll v.5.1.2600.2180

Отправлено: 14:33, 19-09-2011 | #11



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

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


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


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

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


Решил проблему. На сколько я понял проблема на моих системах вызывали эти куски
Код: Выделить весь код
Set objOC = CreateObject("OlePrn.OleCvt.1")
objOC.ToUtf8
т.е. предложенный SendMessage'ом путь создавать текстовый файл в ansi и в него впихивать unicode символы почему у меня не сработал, я погугули и нашел решение котрое действует наооборот т.е. создает изначально UTF-8 а потом удаляет из него это чертов BOM, кстати нашел на этом же форуме, а тут есть решение с отдельной функцией, но уже не стал заморачиваться. Так, что вот версия которая у меня работает не отлично.
читать дальше »
Код: Выделить весь код
' Запуск:
' 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 aplFileUTF8
  Dim aplFileWithoutBOM
  Dim aplFileName
    aplFileName = objFSO.GetParentFolderName(fPath) & "\" & objFSO.GetBaseName(fPath) & ".apl"
    If Not objFSO.FileExists(aplFileName) Then 
		Set aplFileUTF8 = CreateObject("ADODB.Stream")
			aplFileUTF8.Type=2
			aplFileUTF8.Charset = "UTF-8"
			aplFileUTF8.Open
			aplFileUTF8.WriteText "[Monkey's Audio Image Link File]" & vbCrLf & _
									"Image File=" & objFSO.GetFileName(fPath) & vbCrLf & _
									"Start Block=0" & vbCrLf & vbCrLf & _
									"----- APE TAG (DO NOT TOUCH!!!) -----"
			aplFileUTF8.Position=3
		Set aplFileWithoutBOM = CreateObject("ADODB.Stream")
			aplFileWithoutBOM.Type=1
			aplFileWithoutBOM.Open
		aplFileUTF8.CopyTo aplFileWithoutBOM
		aplFileWithoutBOM.SaveToFile(aplFileName)
    End If
End Sub

SendMessage еще раз вам говорю спасибо за помощь.

Отправлено: 17:39, 19-09-2011 | #12



Компьютерный форум 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




 
Переход