View previous topic :: View next topic |
Author |
Message |
kadvlad
Joined: 26 Aug 2007 Posts: 81
|
(Separately) Posted: Tue Jun 10, 2008 19:11 Post subject: Кнопка для пакетной конвертации в MP3 |
|
|
Друзья,
Решил сделать кнопку, чтоб список выделенных файлов (директорий?) передавался в lame.exe для конвертации в mp3.
TOTALCMD#BAR#DATA
%ProgramFiles%\foobar2000\codecs\lame.exe -b 128
%S
%ProgramFiles%\Totalcmd\totalcmd.exe,2
Lame
%ProgramFiles%\foobar2000\codecs\
-1
-1
Мелькает черный экран - и всё.
Подскажите, пожалуйста, где ошибка?
Знает ли кто-нибудь, каким образом в ком.строке кодера указать имена выходящих файлов?
usage: lame.exe [options] <infile> [outfile]
Спасибо. |
|
Back to top |
|
|
Rodny
Joined: 24 Jan 2007 Posts: 949 Location: Могилёв, Беларусь
|
(Separately) Posted: Wed Jun 11, 2008 03:14 Post subject: |
|
|
kadvlad
Путь запуска не нужен:
Code: | TOTALCMD#BAR#DATA
%ProgramFiles%\foobar2000\codecs\lame.exe -b 128
%S
%ProgramFiles%\Totalcmd\totalcmd.exe,2
Lame
-1
-1
| Только это работает с одним файлом. Несколько файлов в командной строке lame, кажется, не позволяет. Подробно я не вникал.
kadvlad wrote: | каким образом в ком.строке кодера указать имена выходящих файлов? | А что ты хочешь указать? Если ничего не писать, как сейчас, то на выходе будет "исходный_файл.mp3". |
|
Back to top |
|
|
kadvlad
Joined: 26 Aug 2007 Posts: 81
|
(Separately) Posted: Wed Jun 11, 2008 21:20 Post subject: |
|
|
Спасибо за содействие.
Искал ответ в "lame.exe -?" но не нашел. Неужели нельзя списком?
Ведь программы-конвертеры делают это..
Указать хочу либо новое имя (с индексом?) либо другой путь сохранения. Бывает, что нужно пережать из 320.mp3 в 128.mp3 для предпрослушек, или на маленькую флэшку перебросить для экономии
Похожее решение раньше было: http://wincmd.ru/plugring/wcx_plugin_BitRate_Converter_0.html
Но в 7.03 почему-то не хочет ставиться.
Может, связаться с автором плагина?.. Сам я не разбираюсь в вопросе. |
|
Back to top |
|
|
Rodny
Joined: 24 Jan 2007 Posts: 949 Location: Могилёв, Беларусь
|
(Separately) Posted: Wed Jun 11, 2008 22:36 Post subject: |
|
|
Программы-конвертеры запускают lame.exe несколько раз поочерёдно.
Для TC mozers написал скрипт List2Multi, который делает то же самое. Вот вроде последняя версия:
Code: | ' File: List2Multi.vbs
' Description: Скрипт для загрузки выделенных в Total Commander файлов в заданную программу
' Version: 1.2
' Author: mozers™
' Comments: Предназначен для программ НЕ поддерживающих загрузку нескольких файлов с ком.строки.
' Поэтому скрипт вызывает программу многократно:
' programm.exe [/param1 /param2] file1.ext
' programm.exe [/param1 /param2] file2.ext
' programm.exe [/param1 /param2] file3.ext
' Sample: Создаем кнопку на панели инструментов (или команду в меню "Запуск"):
' Команда: %COMMANDER_PATH%\Utils\WSH\List2Multi.vbs "%ProgramFiles%\WinRAR\WinRAR.exe" X
' Параметры: %L
' _________________________________________________________
Option Explicit
Dim WshShell, FSO, sProg, objArgs, FileList, sFile, count, param, i
Set objArgs = WScript.Arguments
Set WshShell = WScript.CreateObject("WScript.Shell")
sProg = WshShell.ExpandEnvironmentStrings(objArgs(0))
count = objArgs.Count
If count < 2 Then
WshShell.Run """" & sProg & """", 1, False
Else
param = ""
For i = 1 To count-2
param = param + " " + objArgs(i)
Next
Set FSO = CreateObject("Scripting.FileSystemObject")
Set FileList = FSO.OpenTextFile(objArgs(count-1), 1, False)
Do While Not FileList.AtEndOfStream
sFile = FileList.ReadLine
If Right(sFile,1) = "\" Then
WshShell.Run """" & sProg & """", 1, False
Exit Do
End If
WshShell.Run """" & sProg & """ " & param & " """ & sFile & """", 1, False
Loop
End If
WScript.Quit |
Кнопка будет такой
Code: | TOTALCMD#BAR#DATA
%COMMANDER_PATH%\Utils\WSH\List2Multi.vbs "%ProgramFiles%\foobar2000\codecs\lame.exe" -b 128
%L
%ProgramFiles%\Totalcmd\totalcmd.exe,2
Lame
-1
-1
|
Возможное неудобство в том, что команда выполняется для всех выделенных файлов сразу, что неслабо может нагрузить систему. Тут уж смотри сам, какие у тебя ситуации.
А вот как быть в этом случае с переименованием/перемещением - даже мыслей нет.
У меня для этого специализированный софт стоит.
Last edited by Rodny on Wed Jun 11, 2008 22:49; edited 1 time in total |
|
Back to top |
|
|
kadvlad
Joined: 26 Aug 2007 Posts: 81
|
(Separately) Posted: Wed Jun 11, 2008 22:44 Post subject: |
|
|
Ага, спасибо большое! Поковыряю.
Раньше видел этот скрипт, но даже не додумался искать решение так.
UPD. А может, как-то приспособить команду "wait" для поочередного запуска?
Last edited by kadvlad on Wed Jun 11, 2008 22:53; edited 1 time in total |
|
Back to top |
|
|
aLexx
Joined: 14 Mar 2005 Posts: 442 Location: Новокузнецк
|
(Separately) Posted: Wed Jun 11, 2008 22:48 Post subject: |
|
|
У меня БитРейтКонвертер пашет в полный рост! На ТС 7.03.
Я теперь даже знаю, что на Мотор нельзя больше 300 песен закачать...
А вот на плеер (4 гб памяти) музона качнулось на 200 часов!
И это только любимое... |
|
Back to top |
|
|
Tol!k
Joined: 01 Apr 2008 Posts: 1727 Location: Арзамас
|
(Separately) Posted: Thu Jun 12, 2008 22:48 Post subject: |
|
|
у мну multiarc пашет как волк
; ---------------------------------------------------------
[L.A.M.E.]
Description=LAME http://www.mp3dev.org/
Extension=mp3,LAME
Archiver=lame.exe
Add=%P --abr 320 -k -f %FQA %AQA
Move=%P -b 192 -q2 %FQA %AQA
; --------------------------------------------------------- |
|
Back to top |
|
|
Volniy
Joined: 15 Dec 2004 Posts: 585 Location: Местный
|
(Separately) Posted: Fri Jun 13, 2008 00:46 Post subject: |
|
|
kadvlad wrote: | А может, как-то приспособить команду "wait" для поочередного запуска? |
Замени в скрипте строку Code: | WshShell.Run """" & sProg & """", 1, False | на вот эту Code: | WshShell.Run """" & sProg & """", 1, True |
Это мое 400-ое сообщение и, надо же, такая неглубокая мысля... |
|
Back to top |
|
|
kadvlad
Joined: 26 Aug 2007 Posts: 81
|
(Separately) Posted: Fri Jun 13, 2008 01:30 Post subject: |
|
|
Друзья, спасибо, почти получилось.
В скрипте поменял три строчки с false на true:
---------------------------------------------------------
Option Explicit
Dim WshShell, FSO, sProg, objArgs, FileList, sFile, count, param, i
Set objArgs = WScript.Arguments
Set WshShell = WScript.CreateObject("WScript.Shell")
sProg = WshShell.ExpandEnvironmentStrings(objArgs(0))
count = objArgs.Count
If count < 2 Then
WshShell.Run """" & sProg & """", 1, True
Else
param = ""
For i = 1 To count-2
param = param + " " + objArgs(i)
Next
Set FSO = CreateObject("Scripting.FileSystemObject")
Set FileList = FSO.OpenTextFile(objArgs(count-1), 1, False)
Do While Not FileList.AtEndOfStream
sFile = FileList.ReadLine
If Right(sFile,1) = "\" Then
WshShell.Run """" & sProg & """", 1, True
Exit Do
End If
WshShell.Run """" & sProg & """ " & param & " """ & sFile & """", 1, True
Loop
End If
WScript.Quit
-------------------------------------------------------
кнопка:
--------------------------------------------------------
TOTALCMD#BAR#DATA
%COMMANDER_PATH%\Plugins\List2Multi.vbs "%ProgramFiles%\foobar2000\codecs\lame.exe" --quiet -b 128
%L
%ProgramFiles%\Totalcmd\totalcmd.exe,2
Lame
1
-1
--------------------------------------------------------
Однако остались ещё вопросы:
1. Не удается заставить работать свернутым/скрытым DOS-окно.
Кодековский аргумент --quiet (или --silent) не помогает.
2. Сконвертированные файлы помещаются в ту же диреторию, а к текущему расширению дописывается еще одно новое: "track.mp3.mp3"
Согласен, это наглядно, а можно ли прописать НЕ новое расширение, а префикс: _track.mp3 ?
Что-нибудь типа такого же батника:
@for %%I in (*.mp3) do lame.exe --quiet "%%~nxI"
Спасибо. |
|
Back to top |
|
|
kadvlad
Joined: 26 Aug 2007 Posts: 81
|
(Separately) Posted: Wed Jun 18, 2008 00:50 Post subject: |
|
|
Вот, выложил архивчик (6 Кб) с батниками для пакетной (?) обработки файлов (DOS, GUI).
Автор пишет так:
Quote: | - put this Batch-Command on your Desktop, so you can drag and drop wave files on it and LAME will encode them to mp3 format.
- put this Batch-Command in a place mentioned in your PATH environment, start the DOS-BOX and change to a directory where your wave files are located. the following line will encode all your wave files to mp3 "lame.bat *.wav" |
Посмотрите, пожалуйста, кто понимает.
У меня не получилось сконфигурировать настройки и перетянуть на кнопку файлы. |
|
Back to top |
|
|
Rodny
Joined: 24 Jan 2007 Posts: 949 Location: Могилёв, Беларусь
|
(Separately) Posted: Wed Jun 18, 2008 03:48 Post subject: |
|
|
Сразу говорю: я мало что понимаю
Заставить работать bat-ы на кнопке у меня не получилось. А вот с Lame.vbs кое-какие результаты есть.
А именно по второму вопросу из предыдущего поста:
"можно ли прописать НЕ новое расширение, а префикс: _track.mp3 ?"
В скрипте есть функция
Code: | Function getBasename(filespec)
Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.GetFile(filespec)
getBasename = f.ParentFolder & "\" & fso.GetBaseName(filespec)
End Function |
Я по аналогии добавил другую:
Code: | Function getBasename1(filespec)
Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.GetFile(filespec)
getBasename = f.ParentFolder & "\_" & fso.GetBaseName(filespec)
End Function |
Т.е. непосредственно перед именем исходного файла теперь добавляется подчёркивание. Туда, естественно, можно вписать что-то другое.
Дальше заменил в 109-й строке вызов getBasename(infile) на getBasename1(infile). И, само собой, пути к lame.exe и опции прописал.
Кнопка такого вида:
Code: | TOTALCMD#BAR#DATA
D:\Programs\Lame\Lame.vbs
%S
C:\WINDOWS\System32\WScript.exe
Lame
-1
|
Файлы на неё не перетаскивать! Выделять, а потом просто нажимать кнопку. С папками скрипт не работает в принципе.
Теперь что касается Quote: | 1. Не удается заставить работать свернутым/скрытым DOS-окно.
Кодековский аргумент --quiet (или --silent) не помогает. | Они же не это делают. В справке про оба написано: "don't print anything on screen". И они действительно ничего не выводят. А непосредственно окном они не управляют. |
|
Back to top |
|
|
Dimych
Joined: 01 Feb 2006 Posts: 27
|
(Separately) Posted: Thu Jun 19, 2008 00:41 Post subject: |
|
|
Вот батничек
Code: | @echo off
setlocal
REM Имя командного файла на выполнения кодирования
set RUNCMDFILE=StartLame.cmd
REM Путь для командного файла на выполнения кодирования
set RUNCMDPATH=%TEMP%
REM Полный путь к кодировщику
set BINFULLPATH=%ProgramFiles%\foobar2000\codecs\lame.exe
REM Суффикс для добавления к выходному файлу
set OUTSFX=_lame
REM Путь для сохранение выходных файлов (!!! C ПОСЛЕДНИМ CЛЭШЭМ !!!)
REM Если не задать - будет использоваться путь исходных файлов.
set OUTPATH=
REM Oпции кодирования Lame
set CODEOPT=-b 128
if "%OUTPATH%"=="" set OUTPATH=.\
if "%OUTPATH%"=="." set OUTPATH=.\
REM Создание командного файла на кодирование
echo. > "%RUNCMDPATH%\%RUNCMDFILE%"
echo REM Coding through LAME Encoder>> "%RUNCMDPATH%\%RUNCMDFILE%"
echo @echo off >> "%RUNCMDPATH%\%RUNCMDFILE%"
echo. >> "%RUNCMDPATH%\%RUNCMDFILE%"
echo chcp 1251 ^> nul>> "%RUNCMDPATH%\%RUNCMDFILE%"
for /F "delims=" %%i in (%1) do (
>>"%RUNCMDPATH%\%RUNCMDFILE%" echo cls
>>"%RUNCMDPATH%\%RUNCMDFILE%" echo echo.
>>"%RUNCMDPATH%\%RUNCMDFILE%" echo echo Coding now: "%%~ni%OUTSFX%.mp3"
>>"%RUNCMDPATH%\%RUNCMDFILE%" echo echo.
>>"%RUNCMDPATH%\%RUNCMDFILE%" echo "%BINFULLPATH%" %CODEOPT% "%%i" "%OUTPATH%%%~ni%OUTSFX%.mp3"
)
echo exit >> "%RUNCMDPATH%\%RUNCMDFILE%"
REM Запуск командного файла на кодирование
start "Coding through LAME Encoder, please wait..." /min /D"%RUNCMDPATH%" "%RUNCMDFILE%"
endlocal
exit |
Стартует свернувшись, в параметрах кнопки - %L
Прицип работы: создает командный файл (здесь StartLame.cmd в %TEMP%) и запускает на выполнение. |
|
Back to top |
|
|
Dimych
Joined: 01 Feb 2006 Posts: 27
|
(Separately) Posted: Thu Jun 19, 2008 01:00 Post subject: |
|
|
Небольшая правка:
1. Параметры кнопки %L %P
2.
Code: | if "%OUTPATH%"=="" set OUTPATH=%2
if "%OUTPATH%"=="." set OUTPATH=%2 |
|
|
Back to top |
|
|
Volniy
Joined: 15 Dec 2004 Posts: 585 Location: Местный
|
(Separately) Posted: Thu Jun 19, 2008 02:39 Post subject: |
|
|
kadvlad wrote: | Однако остались ещё вопросы:
1. Не удается заставить работать свернутым/скрытым DOS-окно.
Кодековский аргумент --quiet (или --silent) не помогает. |
Попробуй в скрипте, там где Code: | WshShell.Run """" & sProg & """", 1, True | написать, соответственно Code: | WshShell.Run """" & sProg & """", 6, True | или Code: | WshShell.Run """" & sProg & """", 0, True |
PS сам не проверял... |
|
Back to top |
|
|
kadvlad
Joined: 26 Aug 2007 Posts: 81
|
(Separately) Posted: Thu Jun 19, 2008 12:52 Post subject: |
|
|
Друзья,
спасибо большое всем!
На выходных обязательно попробую все предложенные варианты, о результатах отпишусь.
|
|
Back to top |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|