Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: SuperDraco en 16 Marzo 2011, 09:57 am



Título: (SOLUCIONADO)[ BATCH ] Ayuda con FOR / Analizar bitrate mp3 de archivos.
Publicado por: SuperDraco en 16 Marzo 2011, 09:57 am
Necesito saber como puedo hacer para analizar (Dentro de un directorio) el bitrate de los archivos mp3, lo que realmente necesito es saber cuales son MAYORES de 160 kbps para asignarle un proceso, y olvidarme de los menores de 160 kbps...mediante un batch...

Alguien me puede ayudar con este tema? :/


EDITO: Vale, rebuscando mucho al final me he ayudado del mplayer, aunque el proceso tarda mucho..unos 5 segundos para "escanear" un archivo, pero algo es algo... he conseguido hacer esto, pero está mal echo:

Código:
@echo off

for /f "tokens=*" %%a in ('dir /B *.mp3') do mplayer "%%a" -frames 0 | findstr /c:"320.0 kbit" >null & call :error

:error
IF %ERRORLEVEL% LEQ 0 echo %%a es mayor de 160 kbps & pause
IF NOT %ERRORLEVEL% LEQ 0 echo %%a es menor de 160 k & pause

El problema es en la parte del errorlevel " echo %%a es mayor de 160 kbps & pause" no se m muestra el nombre del archivo, esto es un inconveniente porque entonces como puedo trabajar con el nombre del archivo para asignarle algún proceso?

Una imagen para que me entendais:

(http://img576.imageshack.us/img576/2468/34277491.png)

Si no me resuelve el nombre del archivo de FOR, entonces no podré hacer un...
Código
  1. IF %ERRORLEVEL% LEQ 0 "Reducir_Bitrate.exe" "%%a"

... :(

Aqui hay muchos expertos, seguro que algo se me ha pasado por alto... espero ayuda, graciasss


Título: Re: [ BATCH ] Ayuda con FOR / Analizar bitrate mp3 de archivos.
Publicado por: leogtz en 16 Marzo 2011, 15:09 pm
Más al rato te ayudo, no te desesperes, sigue intentando.


Título: Re: [ BATCH ] Ayuda con FOR / Analizar bitrate mp3 de archivos.
Publicado por: SuperDraco en 16 Marzo 2011, 18:35 pm
Vale Gracias Leo, como siempre si lo consigo por mi mismo postearé la "solución" a tiempo para que no malgasten su tiempo xD, pero dudo que lo consiga.

saludos!


Título: Re: [ BATCH ] Ayuda con FOR / Analizar bitrate mp3 de archivos.
Publicado por: SuperDraco en 16 Marzo 2011, 18:56 pm
Ups, que tonto soy, no había caído en la solución pero si que la sabía... ya lo he arreglado

solo hacia falta usar SET

Código
  1. for /f "tokens=*" %%a in ('dir /B *.mp3') do set nombre=%%a & mplayer "%%a" -frames 0 | findstr /c:"320.0 kbit" >null & call :error
  2.  
  3.  
  4. :error
  5. IF %ERRORLEVEL% LEQ 0 echo %nombre% es mayor de 160 kbps
  6. IF NOT %ERRORLEVEL% LEQ 0 echo %nombre% es menor o igual de 160 kbps
  7.  

Ahora sí!

(http://img35.imageshack.us/img35/4114/prtscrcapture2j.jpg)

quizás me surgan nuevos problemas, ese código solo era para probar que todo iba bien para poder continuar con mi invento xD, estén al tanto! :P

saludos!


Título: Re: [ BATCH ] Ayuda con FOR / Analizar bitrate mp3 de archivos.
Publicado por: SuperDraco en 16 Marzo 2011, 21:19 pm
Bueno, este problema lo considero casi resuelto, de momento llevo esto:
(No estará del todo acabado hasta que no solucione un problemilla con findstr :/, este código de momento solo busca audios de 320 bitrate y tarda mucho por el maldito mplayer le cuesta leer los archivos)


Código
  1. @echo off
  2. Set lista=C:\windows\Temp\Lista.txt
  3.  
  4. for /f "tokens=*" %%a in ('dir /B *.mp3') do set nombre="%%a" & mplayer "%%a" -frames 0 | findstr /c:"320.0 kbit" >null & call :error
  5. for /f "tokens=*" %%a in ('dir /B *.mp4') do set nombre="%%a" & mplayer "%%a" -frames 0 | findstr /c:"320.0 kbit" >null & call :error
  6. for /f "tokens=*" %%a in ('dir /B *.m4a') do set nombre="%%a" & mplayer "%%a" -frames 0 | findstr /c:"320.0 kbit" >null & call :error
  7. for /f "tokens=*" %%a in ('dir /B *.flac') do set nombre="%%a" & mplayer "%%a" -frames 0 | findstr /c:"320.0 kbit" >null & call :error
  8. for /f "tokens=*" %%a in ('dir /B *.wma') do set nombre="%%a" & mplayer "%%a" -frames 0 | findstr /c:"320.0 kbit" >null & call :error
  9.  
  10. cls
  11. If exist %lista% echo+ Se han convertido los siguientes audios a MP3, Bitrate CBR 160, High quality: & echo+ & type %lista% & del /q %lista% & pause >null
  12. If not exist %lista% echo+ No se han encontrado audios superiores a +160 bitrate... & pause >null
  13.  
  14. :error
  15. IF %ERRORLEVEL% LEQ 0 echo+ %nombre% >> %lista% & coreconverter.exe -infile=%nombre% -outfile=%nombre% -convert_to="mp3 (Lame)" -b 160 --cbr -q 0 -noidtag


Título: Re: [ BATCH ] Ayuda con FOR / Analizar bitrate mp3 de archivos.
Publicado por: leogtz en 16 Marzo 2011, 22:11 pm
Se ve horrible el código en una sola línea, por favor separalo.


Título: Re: [ BATCH ] Ayuda con FOR / Analizar bitrate mp3 de archivos.
Publicado por: SuperDraco en 16 Marzo 2011, 22:33 pm
Perdona no te entendí, te refieres a esto?: "[ code ]  [ /code ]"

Ya está, es que uso un theme de color distinto en el foro, a mi se me ve horrible como lo he dejado ahora xDDD

saludos


Título: Re: [ BATCH ] Ayuda con FOR / Analizar bitrate mp3 de archivos.
Publicado por: leogtz en 16 Marzo 2011, 22:42 pm
No, es un mal habito poner varias sentencias en una sola línea de código.


Título: Re: [ BATCH ] Ayuda con FOR / Analizar bitrate mp3 de archivos.
Publicado por: SuperDraco en 17 Marzo 2011, 06:57 am
No, es un mal habito poner varias sentencias en una sola línea de código.
Lo se, siempre lo he escuchado pero no se hacerlo mejor... no puedo modificar el código porque no se como hacer los "if" con parentesis () así de arriba a abajo como se suele hacer xD

saludos!