主题 : [疑难]关于Lame
级别: 模拟之星
UID: 154
精华: 1
发帖: 480
威望: 1 星
金钱: 3578 浮游币
贡献值: 12 点
好评度: 307 点
人气: 1 点
在线时间: 80(时)
注册时间: 2004-03-25
最后登录: 2018-09-03
楼主  发表于: 2004-08-06 23:47

[疑难]关于Lame

Lame的程序能不能支持通配符?
换句话说就是能不能将批量音源文件解/编码?

。。。利用批处理的免。。。。。 em32.gif

或者有没有连续处理一类的参数呢?谢谢了。。。。
harlay
级别: 模拟之星
UID: 25
精华: 0
发帖: 1677
威望: 0 星
金钱: 2966 浮游币
贡献值: 0 点
好评度: 366 点
人气: 0 点
在线时间: 94(时)
注册时间: 2004-03-24
最后登录: 2024-05-29
沙发  发表于: 2004-08-07 00:14

我可以肯定的得告诉你,没有这样的参数。
但是你可以通过其它程序如eac等调用lame来达到目的。
或者也可以试试lame的前端。
不过我都不喜欢以上的软件。
其实可以自己编辑bat文件来达到目的。不过这对个人有一定的要求,不是每个人都编得出来的。
当然我也没有说我编得出来。em32.gif
harlay
级别: 模拟之星
UID: 25
精华: 0
发帖: 1677
威望: 0 星
金钱: 2966 浮游币
贡献值: 0 点
好评度: 366 点
人气: 0 点
在线时间: 94(时)
注册时间: 2004-03-24
最后登录: 2024-05-29
板凳  发表于: 2004-08-07 00:31

引用 (Eiji @ 2004-08-07 00:14:44)
bat不就是我所说的批处理吗?
这个其实不是很难的。学过一点
但是用批处理还是得自己一行一行的输入。。。跟分开打没什么区别。。
要是支持就好了。。。不过为什么没有这功能呢。。。很想不明白。

P.S 现在WINDOWS横行,诸多DOS名词大都被忘却了。。。寒呐

我说的当然不是将处理命令全部写在bat文件里啰。
这样和手打有什么分别?
我说的是编写一些简单的bat程序,而达到使用通配符的目的。
当然是bat加参数才行的啦。
简单的将命名写在bat中有什么意义吗?em32.gif
harlay
级别: 模拟之星
UID: 25
精华: 0
发帖: 1677
威望: 0 星
金钱: 2966 浮游币
贡献值: 0 点
好评度: 366 点
人气: 0 点
在线时间: 94(时)
注册时间: 2004-03-24
最后登录: 2024-05-29
地板  发表于: 2004-08-07 16:31

引用 (Eiji @ 2004-08-07 11:11:31)
引用
我说的当然不是将处理命令全部写在bat文件里啰。
这样和手打有什么分别?
我说的是编写一些简单的bat程序,而达到使用通配符的目的。
当然是bat加参数才行的啦。
简单的将命名写在bat中有什么意义吗?


明白你的意思。我说的也是这个意思。但是BAT里不叫加参数(parameter)也不叫函数(function)而是叫命令(command)。只是可以通过命令(其实还就是DOS命令)达到所谓“编程”的目地。BAT不是语言。只是有时会具有一个编程的思想罢了。BAT里所有的语句都可以在DOS的提示符下执行。
另外。简单的将命令写在BAT中并非完全没有意义。至少可以不用人看着,让机子自己去一个一个的做。要不这样还得等机子做完一个自己再打一个。有点麻烦


还是决定使用前端(也叫外壳吧)了。
WinLAMEr看样子好像不错。。
但是怎么有说是木马的?

bat 使用的有些命令如 if、for、find、shift、%1、%2 等都是不能在 dos 下直接运行的你知道吗?当然也并不是说完全无法在 dos 下运行,但是不通过 bat 编程,直接执行这些命令是没有意义的,是无法达到任何目的的。
还有参数当然是使用在 bat 文件外面的,怎么跑到 bat 文件里面去了?
例如 a.bat %1 %2 等。
%1 %2 就是 bat 所用的参数。
bat 编程当然是有通用性的,可以处理任何文件名的文件。你所谓的批处理,只是将 lame a.wav a.mp3 这样的命令写在 bat 里面,这有什么意义吗?em32.gif
我从 dos 时候起就开始玩电脑了,我到现在最喜欢的也还是 dos,虽然现在是用 windows 了,但是我天天还是在打 dos 命令。
你不知道的话,就最好不要瞎说。
harlay
级别: 模拟之星
UID: 25
精华: 0
发帖: 1677
威望: 0 星
金钱: 2966 浮游币
贡献值: 0 点
好评度: 366 点
人气: 0 点
在线时间: 94(时)
注册时间: 2004-03-24
最后登录: 2024-05-29
草席  发表于: 2004-08-07 20:49

引用 (Eiji @ 2004-08-07 20:19:11)
你所说的这些都是可以在提示符下直接运行的。不信可以自己去试。直接输入这些字母的话是无法实现什么目地,而且大多会出现类似“语法错误”,“缺少参数”一类的出错提示。但绝对不会出现“Bad command or file name.”的问题。
直接执行没什么意义同意。但也不能说不能“直接运行”。

感觉你有断章取意的意思啊。
你怎么只看前半句,而不看后半句呢?照你的意思,那我的后半句不是没有一点意义了吗?
而且你都引用了我的全句,但是怎么只看前面而不管后面的呢?em32.gif
你怎么能挑我的文字错误、或者说是语误,而忽略整句的意思呢?

引用 (Eiji @ 2004-08-07 20:19:11)
只写一行当然没什么意义。
但是如果
copy con a.bat
lame a.wav a.mp3
lame b.wav b.mp3
lame c.wav c.mp3
.
.
.

^z
这样写的话。人就可以走开了。让电脑自己去处理。并不是没有意义的。这点你也误解我的意思了。

DOS玩得十分好不敢说。但是要是说我不知道瞎说的话我就不能同意了。

我和你说的根本就是两回事嘛。
引用
只是将 lame a.wav a.mp3 这样的命令写在 bat 里面

看见“这样”两个字了吗?你这个只是批处理而已,而且你能写几条命令?
如果我换一个中文的文件名,或者是abcd.wav呢?不又不能用了。就算你都写进去了好了,那你能写多少个?
我说的是 bat 文件的编程,根本就是两回事嘛。
不管你文件名怎么变,我一个 bat 文件就可以搞定了。
关于最后一句话我收回就是了嘛。OK?
harlay
级别: 模拟之星
UID: 25
精华: 0
发帖: 1677
威望: 0 星
金钱: 2966 浮游币
贡献值: 0 点
好评度: 366 点
人气: 0 点
在线时间: 94(时)
注册时间: 2004-03-24
最后登录: 2024-05-29
5楼  发表于: 2004-08-07 20:57

引用 (Eiji @ 2004-08-07 20:40:10)
而且。。。本来就没什么难的。

查了点东西我已经写出来了。并带有最简单的除错功能。
@echo off
path=d:\lame   '这句是lame路径。自己可以改
if not exist *.mp3 goto err1 '除错
for %%c in (*.mp3) do d:\lame\lame.exe --decode %%c '这句是关键
goto end

:err1
echo Have no mp3 file(s).
goto end
:end
echo END


功能就是把当前这个BAT文件所在的目录下的所有MP3文件转成WAV。
缺点就是文件名无法规范。比如对于a.mp3只能最后成为a.mp3.wav。这我还没办法解决。
如果当前目录下无MP3文件就显示Have no MP3 file(s).
哈哈哈哈哈

关于你这个程序,我不说大家心知肚明,肯定是那个网上抄来的。
如果我说错了,我接受你的874。
harlay
级别: 模拟之星
UID: 25
精华: 0
发帖: 1677
威望: 0 星
金钱: 2966 浮游币
贡献值: 0 点
好评度: 366 点
人气: 0 点
在线时间: 94(时)
注册时间: 2004-03-24
最后登录: 2024-05-29
6楼  发表于: 2004-08-07 21:18

你说的是“for %%c in (*.mp3) do d:\lame\lame.exe --decode %%c”吧。
你执行do以后,文件名其实还是包括mp3的。
还有就是开始你定义了“path=d:\lame”,然do的时候又写了路径。
harlay
级别: 模拟之星
UID: 25
精华: 0
发帖: 1677
威望: 0 星
金钱: 2966 浮游币
贡献值: 0 点
好评度: 366 点
人气: 0 点
在线时间: 94(时)
注册时间: 2004-03-24
最后登录: 2024-05-29
7楼  发表于: 2004-08-07 21:30

引用 (Eiji @ 2004-08-07 21:14:18)
不是那个。那个纯属笔。。。。键盘误。

因为是基于DOS对长文件名的限制和DOS批处理编程FOR里%%C的原理造成的这个东西不能支持文件名中带有“ ”(空格)的MP3文件。
如果MP3文件名中带有空格的话那么文件名空格后的部分就会被认定为LAME的另一个参数。所以文件名中带有空格的MP3文件无法正确解码。
错误是在这。
刚才我想了想。这个办法在BAT中我还无法解决。。。QB也不行。。。
只能通过VB了。。。。那就跟写个前端没什么区别了。。。。。最近不干这么累的事。。。。。。

P.S。。什么叫874....^^

将你的这句
for %%c in (*.mp3) do d:\lame\lame.exe --decode %%c
改为
for %%c in (*.mp3) do d:\lame\lame.exe --decode "%%c"
就行了啊。em32.gif
harlay
级别: 模拟之星
UID: 25
精华: 0
发帖: 1677
威望: 0 星
金钱: 2966 浮游币
贡献值: 0 点
好评度: 366 点
人气: 0 点
在线时间: 94(时)
注册时间: 2004-03-24
最后登录: 2024-05-29
8楼  发表于: 2004-08-07 21:50

@echo off
path=d:\lame
if not exist *.mp3 goto err1
for %%c in (*.mp3) do lame.exe --decode "%%c"
md wav
move *.wav wav
cd wav
for %%c in (*.wav) do ren "%%c" *.
for %%c in (*.mp3) do ren "%%c" *.
for %%c in (*.) do ren "%%c" *.wav
move *.* ..
cd..
rd wav
goto end

:err1
echo Have no mp3 file(s).
goto end
:end
echo END
将你的程序改了一下,解决了文件名的问题。