Autor
|
Tema: [BATCH] Randomizar listas m3u (Leído 8,862 veces)
|
morgothic
Desconectado
Mensajes: 6
|
Hola! Es la primera vez que escribo en el foro, así que saludos a tod@s! Os pido ayuda a vosotros dado que no tengo idea de programación :$ Os expongo brevemente el caso. Desde hace tiempo juego a Guild Wars 2 y en éste la música llega a ser bastante repetitiva. Existe la opción de crear hasta 8 listas de reproducción diferentes, cada una para una situación (Ambiente, batalla, noche, etc). Hasta ahí todo bien, lo que ocurre es que el juego no te randomiza las listas, simplemente las reproduce una y otra vez desde el principio cada vez que accedes al juego. Tras mucho investigar, hacer pruebas y tal, la única opción que se me ocurrió fue añadir algún código al .m3u que randomizara directamente los temas sin necesidad de marcar "Shuffle" en los reproductores, pero me ha sido imposible lograrlo, quizá no da esa opción el m3u... Consultando por el foro ví un post de EleKtro H@cker en el cual comentaba algo sobre Randomizar lineas en un txt: Echo #EXTM3U >" %Temp%\Lista Winamp.tmp" For /F "Tokens=*" %%$ in (' Dir /B /S " %CARPETA%" ^| Findstr /R ".aif .flac .m4a .mid .mp3 .ogg .wav .wma"' ) do (Echo !Random!!Random!!Random!; %%$ >>" %Temp%\Lista Winamp.tmp" ) Echo #EXTM3U >" %Temp%\Lista Winamp.m3u" For /F "Tokens=2* Delims=;" %%a in ('Type " %Temp%\Lista Winamp.tmp" ^| Sort ' ) do (Echo %%a>>" %Temp%\Lista Winamp.m3u" ) Start /B C:"\Program Files (x86)\Winamp\winamp.exe" "%Temp%\Lista Winamp.m3u"
Aún no estoy seguro si debería investigar por este camino, si me podría funcionar... ¿Creéis que es posible hacer algun ejecutable para arrancarlo antes del juego y que modifique las listas rápida y facilmente? Gracias a todos y disculpad mi ignorancia.
|
|
« Última modificación: 14 Octubre 2012, 18:07 pm por EleKtro H@cker »
|
En línea
|
|
|
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.866
|
Hola de nuevo xD Hombre, ese código lo que hace es listar todos los archivos de música de un directorio, y añadirlos en un m3u (randomizando los archivos en las lineas), y creo que lo que tú quieres es desorganizar las lineas que ya contiene un archivo m3u, así que habría que hacerle algún pequeño retoque: CORREGIDO: @Echo OFF Title Randomizador de listas de reproduccion M3U (by Elektro H@cker^) PUSHD "C:\CARPETA DE LAS LISTAS" Echo [ Procesando listas... ] | MORE FOR /R %%@ IN (*.M3U) DO ( Echo [+] %%~nx@ Echo #EXTM3U>"%Temp%\%%~n@.tmp" Echo #EXTM3U>"%Temp%\%%~n@.m3u" FOR /F "TOKENS=*" %%# IN ('TYPE "%%@" ^| FINDSTR /V /I "#EXTM3U #EXTINF"') DO ( CALL ECHO %%Random%%%%Random%%%%Random%%;%%#>>"%Temp%\%%~n@.tmp") For /F "Tokens=2* Delims=;" %%a in ('Type "%Temp%\%%~n@.tmp" ^| Sort') do (Echo %%a>>"%Temp%\%%~n@.m3u") (Move /Y "%Temp%\%%~n@.m3u" "%%@" >NUL && (Echo OK!) || (Echo ERROR... & Pause)) | MORE )
REM Con este comando ejecutas el juego directamente... REM Start /B /D "C:\Carpeta del Guild Wars 2\" "guildwars2.exe" PAUSE&EXIT EDITO: No necesitas convertirlo a EXE ni nada, ejecuta el bat y el bat ya se encarga de ejecutar luego el juego. puedes crear un acceso directo del bat al escritorio para ponerle un icono bonito como el del guild wars... Saludos
|
|
« Última modificación: 14 Octubre 2012, 18:39 pm por EleKtro H@cker »
|
En línea
|
|
|
|
morgothic
Desconectado
Mensajes: 6
|
Hola! He editado el código para ponerle las rutas a carpetas y tal: @Echo OFF Title Randomizador de listas de reproduccion M3U (by Elektro H@cker^) PUSHD "C:\Guild Wars 2\Music" Echo [ Procesando listas... ] | MORE FOR /R %%@ IN (*.M3U) DO ( Echo [+] %%~nx@ Echo #EXTM3U>"%Temp%\%%~n@.tmp" Echo #EXTM3U>"%Temp%\%%~n@.m3u" FOR /F "TOKENS=*" %%# IN ('TYPE "%%@" ^| FINDSTR /V /I "#EXTM3U #EXTINF"') DO ( CALL ECHO %%Random%%%%Random%%%%Random%%!!%%#>>"%Temp%\%%~n@.tmp") For /F "Tokens=2* Delims=;" %%a in ('Type "%Temp%\%%~n@.tmp" ^| Sort') do (Echo %%a>>"%Temp%\%%~n@.m3u") (Move /Y "%Temp%\%%~n@.m3u" "%%@" >NUL && (Echo OK!) || (Echo ERROR... & Pause)) | MORE )
REM Con este comando ejecutas el juego directamente... REM Start /B /D "C:\Guild Wars 2\" "Gw2.exe" PAUSE&EXIT Al ejecutarlo me borra el contenido de todas las listas, me las devuelve vacías. Esto es lo que vería en una lista normal en el bloc de notas: #EXTM3U #EXTINF:141,Two Steps From Hell (310 985-1 - From The Abyss C:\Guild Wars 2\Music\MainMenu\1-06 From The Abyss.mp3 #EXTINF:156,Two Steps From Hell (310 985-1 - Born Of Ash C:\Guild Wars 2\Music\MainMenu\1-13 Born Of Ash.mp3 #EXTINF:208,Midnight Syndicate - Living Walls C:\Guild Wars 2\Music\MainMenu\22 - Living Walls.mp3 Y al ejecutar el .bat, tan sólo me devuelve una sóla linea con #EXTM3U La música la tengo en carpetas ordenadas y todas las listas a parte en una única carpeta, te lo digo como info, pero no creo que tenga nada que ver. Qué me puede estar fallando? Gracias! Aaag! Casi está!! jajaja (llevo 3 días buscando una solución para esto y ahora siento que está a punto! muy muy agradecido EleKtro H@cker)
|
|
|
En línea
|
|
|
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.866
|
Hola, Al pegar el código en el foro con la etiqueta de BATCH me ha insertado dos caracteres de exclamación !!%%Random%%!!%%#
Es un error del plugin del foro, ya lo he puesto sin etiquetas, ahora puedes copiarlo que funciona bien. saludos
|
|
|
En línea
|
|
|
|
morgothic
Desconectado
Mensajes: 6
|
BRAVO!!!!!!!! 1k gracias! Funciona a la perfección! Las listas cambian perfectamente, pero no ejecuta el gw2.exe. Cuando lo ejecuto, me indica que no encuentra la ruta o algo así: El nombre de archivo, directorio o etiqueta del volumen no es válido Y la ruta que pongo está correcta, es la del juego: REM Start /B /D "C:\Guild Wars 2\" "Gw2.exe" ?????? Bueno, de todas maneras, ya me has ayudado infinitamente, buscaré algo de info del comando REM he intentaré hacerlo yo. Muchas gracias por todo y nada, empezaré a tocar un poco de python y ruby a ver que tal
|
|
|
En línea
|
|
|
|
Novlucker
Ninja y
Colaborador
Desconectado
Mensajes: 10.683
Yo que tu lo pienso dos veces
|
REM se utiliza para comentar código, debes de quitarlo si quieres que se ejecute el start Saludos
|
|
|
En línea
|
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD "Hay dos cosas infinitas: el Universo y la estupidez humana. Y de la primera no estoy muy seguro." Albert Einstein
|
|
|
morgothic
Desconectado
Mensajes: 6
|
XDD ok ................ (i'm so nooooob)
|
|
|
En línea
|
|
|
|
morgothic
Desconectado
Mensajes: 6
|
Una cosa más... No reparé en una cosa! Con respecto al randomizador: Rula correctamente en cuanto al winamp, media player, etc respecta, pero el juego no lee esos m3u. Me explico: Así se ve en el bloc de notas antes de ejecutar el bat: #EXTM3U #EXTINF:0,1-02 Super Strength 2.mp3 MainMenu\1-02 Super Strength 2.mp3
#EXTINF:0,1-06 From The Abyss.mp3 MainMenu\1-06 From The Abyss.mp3
#EXTINF:0,1-11 The Summoning orc.mp3 MainMenu\1-11 The Summoning orc.mp3
#EXTINF:0,1-13 Born Of Ash.mp3 MainMenu.... etc etc etc Y así tras ejecutarlo: #EXTM3U MainMenu\1-13 Born Of Ash.mp3 MainMenu\12 Fill My Heart (No Choir).mp3 MainMenu\1-02 Super Strength 2.mp3 MainMenu\1-11 The Su... etc etc etc ¿Cómo puedo conseguir que el ejecutable me escriba también los #EXTINF? Sería algo así como "#EXTINF:0," donde el 0 representa la longitud de la pista en segundos (0 = toda la pista) y el nombre de la pista
|
|
|
En línea
|
|
|
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.866
|
Entonces prueba así: @Echo OFF Title Randomizador de listas de reproduccion M3U (by Elektro H@cker^)
Echo [ Procesando listas... ] | MORE FOR /R %%@ IN (*.M3U) DO ( Echo [+] %%~nx@ Echo #EXTM3U|MORE>"%Temp%\%%~n@.tmp" Echo #EXTM3U|MORE>"%Temp%\%%~n@.m3u" FOR /F "TOKENS=*" %%# IN ('TYPE "%%@" ^| FINDSTR /V /I "#EXTM3U MAINMENU"') DO ( CALL ECHO %%Random%%%%Random%%%%Random%%;%%#>>"%Temp%\%%~n@.tmp") For /F "Tokens=2* Delims=;" %%a in ('Type "%Temp%\%%~n@.tmp" ^| Sort') do ( Echo %%a>>"%Temp%\%%~n@.m3u" For /F "Tokens=2* Delims=," %%A in ('echo %%a') do (Echo MainMenu\%%A|MORE>>"%Temp%\%%~n@.m3u")) (Move /Y "%Temp%\%%~n@.m3u" "%%@" >NUL && (Echo OK!) || (Echo ERROR... & Pause)) | MORE ) Start /B /D "C:\Guild Wars 2\" "Gw2.exe" PAUSE&EXIT output: #EXTM3U
#EXTINF:0,1-13 Born Of Ash.mp3 MainMenu\1-13 Born Of Ash.mp3
#EXTINF:0,1-02 Super Strength 2.mp3 MainMenu\1-02 Super Strength 2.mp3
#EXTINF:0,1-11 The Summoning orc.mp3 MainMenu\1-11 The Summoning orc.mp3
#EXTINF:0,1-06 From The Abyss.mp3 MainMenu\1-06 From The Abyss.mp3
|
|
|
En línea
|
|
|
|
morgothic
Desconectado
Mensajes: 6
|
Buenos días a todos! Para finalizar con este post, pudiendo darlo por resuelto anotaré aquí todo el código fuente. La idea de que con esa última formula que anotó EleKtro H@cker una de las playlist quedase perfecta me llevó a copiarla y cambiar el nombre también para las otras carpetas. Quizá haya una manera mas sencilla de programarlo todo, pero esta sin duda funciona a la perfección. @Echo OFF color 0c Title Randomizador de listas de reproduccion M3U (by Elektro H@cker^)
PUSHD "C:\Guild Wars 2\Music"
Echo [ Procesando listas... ] | MORE FOR /D %%@ IN (MAINMENU.M3U) DO ( Echo [+] %%~nx@ Echo #EXTM3U|MORE>"%Temp%\%%~n@.tmp" Echo #EXTM3U|MORE>"%Temp%\%%~n@.m3u" FOR /F "TOKENS=*" %%# IN ('TYPE "%%@" ^| FINDSTR /V /I "#EXTM3U MAINMENU"') DO ( CALL ECHO %%Random%%%%Random%%%%Random%%;%%#>>"%Temp%\%%~n@.tmp") For /F "Tokens=2* Delims=;" %%a in ('Type "%Temp%\%%~n@.tmp" ^| Sort') do ( Echo %%a>>"%Temp%\%%~n@.m3u" For /F "Tokens=2* Delims=," %%A in ('echo %%a') do (Echo MainMenu\%%A|MORE>>"%Temp%\%%~n@.m3u")) (Move /Y "%Temp%\%%~n@.m3u" "%%@" >NUL && (Echo OK!) || (Echo ERROR... & Pause)) | MORE ) FOR /D %%@ IN (AMBIENT.M3U) DO ( Echo [+] %%~nx@ Echo #EXTM3U|MORE>"%Temp%\%%~n@.tmp" Echo #EXTM3U|MORE>"%Temp%\%%~n@.m3u" FOR /F "TOKENS=*" %%# IN ('TYPE "%%@" ^| FINDSTR /V /I "#EXTM3U AMBIENT"') DO ( CALL ECHO %%Random%%%%Random%%%%Random%%;%%#>>"%Temp%\%%~n@.tmp") For /F "Tokens=2* Delims=;" %%a in ('Type "%Temp%\%%~n@.tmp" ^| Sort') do ( Echo %%a>>"%Temp%\%%~n@.m3u" For /F "Tokens=2* Delims=," %%A in ('echo %%a') do (Echo Ambient\%%A|MORE>>"%Temp%\%%~n@.m3u")) (Move /Y "%Temp%\%%~n@.m3u" "%%@" >NUL && (Echo OK!) || (Echo ERROR... & Pause)) | MORE ) FOR /D %%@ IN (BATTLE.M3U) DO ( Echo [+] %%~nx@ Echo #EXTM3U|MORE>"%Temp%\%%~n@.tmp" Echo #EXTM3U|MORE>"%Temp%\%%~n@.m3u" FOR /F "TOKENS=*" %%# IN ('TYPE "%%@" ^| FINDSTR /V /I "#EXTM3U BATTLE"') DO ( CALL ECHO %%Random%%%%Random%%%%Random%%;%%#>>"%Temp%\%%~n@.tmp") For /F "Tokens=2* Delims=;" %%a in ('Type "%Temp%\%%~n@.tmp" ^| Sort') do ( Echo %%a>>"%Temp%\%%~n@.m3u" For /F "Tokens=2* Delims=," %%A in ('echo %%a') do (Echo BATTLE\%%A|MORE>>"%Temp%\%%~n@.m3u")) (Move /Y "%Temp%\%%~n@.m3u" "%%@" >NUL && (Echo OK!) || (Echo ERROR... & Pause)) | MORE ) FOR /D %%@ IN (BOSSBATTLE.M3U) DO ( Echo [+] %%~nx@ Echo #EXTM3U|MORE>"%Temp%\%%~n@.tmp" Echo #EXTM3U|MORE>"%Temp%\%%~n@.m3u" FOR /F "TOKENS=*" %%# IN ('TYPE "%%@" ^| FINDSTR /V /I "#EXTM3U BOSSBATTLE"') DO ( CALL ECHO %%Random%%%%Random%%%%Random%%;%%#>>"%Temp%\%%~n@.tmp") For /F "Tokens=2* Delims=;" %%a in ('Type "%Temp%\%%~n@.tmp" ^| Sort') do ( Echo %%a>>"%Temp%\%%~n@.m3u" For /F "Tokens=2* Delims=," %%A in ('echo %%a') do (Echo BOSSBATTLE\%%A|MORE>>"%Temp%\%%~n@.m3u")) (Move /Y "%Temp%\%%~n@.m3u" "%%@" >NUL && (Echo OK!) || (Echo ERROR... & Pause)) | MORE ) FOR /D %%@ IN (CITY.M3U) DO ( Echo [+] %%~nx@ Echo #EXTM3U|MORE>"%Temp%\%%~n@.tmp" Echo #EXTM3U|MORE>"%Temp%\%%~n@.m3u" FOR /F "TOKENS=*" %%# IN ('TYPE "%%@" ^| FINDSTR /V /I "#EXTM3U CITY"') DO ( CALL ECHO %%Random%%%%Random%%%%Random%%;%%#>>"%Temp%\%%~n@.tmp") For /F "Tokens=2* Delims=;" %%a in ('Type "%Temp%\%%~n@.tmp" ^| Sort') do ( Echo %%a>>"%Temp%\%%~n@.m3u" For /F "Tokens=2* Delims=," %%A in ('echo %%a') do (Echo CITY\%%A|MORE>>"%Temp%\%%~n@.m3u")) (Move /Y "%Temp%\%%~n@.m3u" "%%@" >NUL && (Echo OK!) || (Echo ERROR... & Pause)) | MORE ) FOR /D %%@ IN (CRAFTING.M3U) DO ( Echo [+] %%~nx@ Echo #EXTM3U|MORE>"%Temp%\%%~n@.tmp" Echo #EXTM3U|MORE>"%Temp%\%%~n@.m3u" FOR /F "TOKENS=*" %%# IN ('TYPE "%%@" ^| FINDSTR /V /I "#EXTM3U CRAFTING"') DO ( CALL ECHO %%Random%%%%Random%%%%Random%%;%%#>>"%Temp%\%%~n@.tmp") For /F "Tokens=2* Delims=;" %%a in ('Type "%Temp%\%%~n@.tmp" ^| Sort') do ( Echo %%a>>"%Temp%\%%~n@.m3u" For /F "Tokens=2* Delims=," %%A in ('echo %%a') do (Echo CRAFTING\%%A|MORE>>"%Temp%\%%~n@.m3u")) (Move /Y "%Temp%\%%~n@.m3u" "%%@" >NUL && (Echo OK!) || (Echo ERROR... & Pause)) | MORE ) FOR /D %%@ IN (NIGHTTIME.M3U) DO ( Echo [+] %%~nx@ Echo #EXTM3U|MORE>"%Temp%\%%~n@.tmp" Echo #EXTM3U|MORE>"%Temp%\%%~n@.m3u" FOR /F "TOKENS=*" %%# IN ('TYPE "%%@" ^| FINDSTR /V /I "#EXTM3U NIGHTTIME"') DO ( CALL ECHO %%Random%%%%Random%%%%Random%%;%%#>>"%Temp%\%%~n@.tmp") For /F "Tokens=2* Delims=;" %%a in ('Type "%Temp%\%%~n@.tmp" ^| Sort') do ( Echo %%a>>"%Temp%\%%~n@.m3u" For /F "Tokens=2* Delims=," %%A in ('echo %%a') do (Echo NIGHTTIME\%%A|MORE>>"%Temp%\%%~n@.m3u")) (Move /Y "%Temp%\%%~n@.m3u" "%%@" >NUL && (Echo OK!) || (Echo ERROR... & Pause)) | MORE ) FOR /D %%@ IN (UNDERWATER.M3U) DO ( Echo [+] %%~nx@ Echo #EXTM3U|MORE>"%Temp%\%%~n@.tmp" Echo #EXTM3U|MORE>"%Temp%\%%~n@.m3u" FOR /F "TOKENS=*" %%# IN ('TYPE "%%@" ^| FINDSTR /V /I "#EXTM3U UNDERWATER"') DO ( CALL ECHO %%Random%%%%Random%%%%Random%%;%%#>>"%Temp%\%%~n@.tmp") For /F "Tokens=2* Delims=;" %%a in ('Type "%Temp%\%%~n@.tmp" ^| Sort') do ( Echo %%a>>"%Temp%\%%~n@.m3u" For /F "Tokens=2* Delims=," %%A in ('echo %%a') do (Echo UNDERWATER\%%A|MORE>>"%Temp%\%%~n@.m3u")) (Move /Y "%Temp%\%%~n@.m3u" "%%@" >NUL && (Echo OK!) || (Echo ERROR... & Pause)) | MORE )
call "C:\Guild Wars 2\Gw2.exe"
exit Un poco largo todo, no? Pero funciona perfectamente. De nuevo gracias a todos por ayudarme y un saludo!
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Batch File Creator - (Generador de Archivos Binarios con BATCH)
Scripting
|
sirdarckcat
|
6
|
15,929
|
24 Noviembre 2006, 07:38 am
por Hendrix
|
|
|
Uso de Listas: Subprograma que lea 2 listas y forme una.
Dudas Generales
|
hbenitez
|
2
|
3,541
|
8 Agosto 2010, 20:11 pm
por hbenitez
|
|
|
Ayuda Acerca De Listas y Listas Circulares (Revienta Memoria :S)
Programación C/C++
|
Gerik
|
0
|
5,968
|
12 Septiembre 2010, 01:49 am
por Gerik
|
|
|
(Solucionado) [Batch] Randomizar lineas en un txt?
« 1 2 »
Scripting
|
Eleкtro
|
17
|
12,216
|
31 Mayo 2014, 09:06 am
por Dsalomon
|
|
|
[Batch] Insertar un batch dentro de un batch que fabrique un .txt
Scripting
|
$pedrojo2704
|
2
|
6,235
|
23 Agosto 2012, 10:08 am
por $pedrojo2704
|
|