Muchas gracias por visitar.
Hace mucho había visto este código muy bueno:
@echo off
setlocal enabledelayedexpansion
for /f "tokens=* delims=" %%x in ('type texto.txt') do (
set linea=%%x
set linea=!linea:Perl=C!
call :show !linea!
)
goto:eof
:show
echo %* >> out.txt
goto:eof
Y lo pensé usar en este código para ripear juegos que funciona de forma excelente.
@echo off
::Sistema MP3 a OGG::
::Variables::
::Extension::
::Entra (diseñado para MP3)
set mp3int=mp3
::Wav (temporal)
set tempwav=wavtmp
::Sale (diseñado para OGG)
set oggext=mp3.ogg
::Calidad::
set configogg=-q 2.50
::Codigo
setlocal enabledelayedexpansion
for /R %%x in (*.%mp3int%) do (
set linea=%%x
set linea=!linea:.mp3=!
call :show !linea!
)
goto:eof
:show
lame --decode "%*.%mp3int%" "%*.%tempwav%"
oggenc2 %configogg% "%*.%tempwav%" -o "%*.%oggext%"
del "%*.%mp3int%" /s
del "%*.%tempwav%" /s
)
goto:eof
Pero hay un inconveniente... :(
Cuando paso
set linea=!linea:.mp3=!
a
set linea=!linea:.%mp3int%=!
La variable %mp3int% ya no responde ¿Como puedo solucionar esto?.
Muchas gracias, agradecido con ustedes por siempre...
( Sin examinar demasiado el código ), prueba así:
Call set linea=!linea:.%%mp3int%%=!
Saludos
Cita de: Eleкtro en 9 Diciembre 2014, 23:18 PM
( Sin examinar demasiado el código ), prueba así:
Call set linea=!linea:.%%mp3int%%=!
Saludos
Esta vez no funciono amigo.
Estás haciendo un reemplazamiento de variable que resulta innecesario ya que solo pretendes quitar la extensión del archivo, pero Batch pone a tu disposición las variables especiales de FOR y éstas tienen modificadores de variable, los cuales ya hacen esa tarea por ti.
He editado bastante el código, aunque no se si es esto lo que quieres:
set "InExt=mp3" :: Input file ext.
set "OutExt=ogg" :: Out file ext.
set "configogg=-q 2.50" :: ogg encoder parameters.
For /R %%# in (
"*.%InExt%"
) Do (
Call :Convert "%%~f#" "%%~dp#" "%%~n#" "%%~x#" "%OutExt%"
)
Pause & Exit
:Convert
:: %1=Full path
:: %2=Directory name
:: %3=File name
:: %4=File Ext.
:: %5=Output Ext.
Echo.
Echo File: "%~1"
Echo Decode into: "%TEMP%\%~3%~4.tmp"
Echo Encode into: "%~2%~3.%~5"
Echo.
Lame.exe --decode "%~1" "%TEMP%\%~3%~4.tmp"
oggenc2.exe %configogg% "%TEMP%\%~3%~4.tmp" -o "%~2%~3.%~5"
Del /Q "%TEMP%\%~3%~4.tmp"
Goto :EOF
PD: El codificador de Ogg vorbis no puede convertir directamente el archivo mp3 a ogg?, creo que usar lame para decodificar a wave es un paso innecesario.
Saludos
Cita de: Eleкtro en 10 Diciembre 2014, 13:24 PM
Estás haciendo un reemplazamiento de variable que resulta innecesario ya que solo pretendes quitar la extensión del archivo, pero Batch pone a tu disposición las variables especiales de FOR y éstas tienen modificadores de variable, los cuales ya hacen esa tarea por ti.
He editado bastante el código, aunque no se si es esto lo que quieres:
set "InExt=mp3" :: Input file ext.
set "OutExt=ogg" :: Out file ext.
set "configogg=-q 2.50" :: ogg encoder parameters.
For /R %%# in (
"*.%InExt%"
) Do (
Call :Convert "%%~f#" "%%~dp#" "%%~n#" "%%~x#" "%OutExt%"
)
Pause & Exit
:Convert
:: %1=Full path
:: %2=Directory name
:: %3=File name
:: %4=File Ext.
:: %5=Output Ext.
Echo.
Echo File: "%~1"
Echo Decode into: "%TEMP%\%~3%~4.tmp"
Echo Encode into: "%~2%~3.%~5"
Echo.
Lame.exe --decode "%~1" "%TEMP%\%~3%~4.tmp"
oggenc2.exe %configogg% "%TEMP%\%~3%~4.tmp" -o "%~2%~3.%~5"
Del /Q "%TEMP%\%~3%~4.tmp"
Goto :EOF
PD: El codificador de Ogg vorbis no puede convertir directamente el archivo mp3 a ogg?, creo que usar lame para decodificar a wave es un paso innecesario.
Saludos
Jajaja, no se que decir es excelente! Hoy aprendí mucho. Y no lamentablemente no hay soporte nativo, ya que ambos son competencia. Lo único que no se te ocurra poner eso el la raíz de tu disco.