elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  (Solucionado) [Batch] Randomizar lineas en un txt?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 [2] Ir Abajo Respuesta Imprimir
Autor Tema: (Solucionado) [Batch] Randomizar lineas en un txt?  (Leído 12,264 veces)
Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.878



Ver Perfil
Re: (Solucionado) [Batch] Randomizar lineas en un txt?
« Respuesta #10 en: 11 Octubre 2013, 17:05 pm »

No puedo ayudarte mucho más porque no entiendo porque intentas usar las Pipes del For con el programa Clever, no tengo estas utilidades de Winamp y tampoco comentas lo que se supone que debería suceder al redireccionar a este programa, entonces solo puedo aconsejarte que mejores la sintaxis/integridad del código y poco más.

Prueba algo así:
Código
  1. IF %ERRORLEVEL% EQU 0 (cd "%UserProfile%\Desktop\clever pause") | (clever.exe pause 1>nul & Goto :Comprobar)

Código
  1. IF %ERRORLEVEL% EQU 0 (FOR /R %%_ in ("*clever.exe") do (start /B "" "%%_")) | clever.exe pause 1>nul | (Taskkill /F /IM TxtTick.exe >nul & Goto :Esperar)

Saludos


En línea



Dsalomon

Desconectado Desconectado

Mensajes: 52


Ver Perfil
Re: (Solucionado) [Batch] Randomizar lineas en un txt?
« Respuesta #11 en: 12 Octubre 2013, 07:24 am »

maestro como esto ya es diferente a lo tratado mejor abri un tema para esto..


http://foro.elhacker.net/scripting/uso_de_clever_en_winamp-t400500.0.html;msg1890828#msg1890828

si me pudieras ayudar... ya que solo soy una aprendiz...

por cierto muy interesante el tema que tienes bloqueado por hacer el tutorial de script...



En línea

Dsalomon

Desconectado Desconectado

Mensajes: 52


Ver Perfil
Re: (Solucionado) [Batch] Randomizar lineas en un txt?
« Respuesta #12 en: 13 Octubre 2013, 09:15 am »

te tengo 2 peticiones para el tema especifico de las lineas en ramdom

1- que los archivos ya no se repitan

2- sera que se le puede poner duracción especifica de tiempo

lei algo al respecto pero no se que tan cierto sea


Código
  1. #EXTM3U
  2. #EXTINF:516,c.04-10-12_07-46.01.avi
  3. #EXTVLCOPT:start-time=14
  4. #EXTVLCOPT:stop-time=30
  5. C:\jb\postdv\2004BrissagoCalvia\c.04-10-12_07-46.01.avi


Citar
Los tiempos están dados al segundo más cercano solamente, así que esto no iba para el trabajo de edición no lineal,
En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.878



Ver Perfil
Re: (Solucionado) [Batch] Randomizar lineas en un txt?
« Respuesta #13 en: 13 Octubre 2013, 09:41 am »

Creo que no existe esa información en la estructura M3U, no estoy seguro, pero no creo que cueste tanto abrir la wikipedia, buscar, e informarse: http://en.wikipedia.org/wiki/M3U

Citar
Código:
Directive 	Description                                      	Example
#EXTM3U File header. Must be the first line of the file! #EXTM3U

#EXTINF Track information, including runtime and title. #EXTINF:191,Artist Name - Track Title


Para especificar el tiempo de duración tienes que crear otro tipo de lista multimedia, por ejemplo "pls", y eso requiere escribir el código desde cero para adaptarlo a la estructura de la nueva lista multimedia.

Pero además, usando Batch no es posible obtener la información de duración de un archivo multimedia, ya te lo dije que pides cosas que con Batch no es posible y va siendo hora de que uses otro lenguaje.

De todas formas puedes usar la aplicación MediaInfo desde la consola para obtener la duración de un archivo multimedia: http://mediaarea.net/es/MediaInfo/Download/Windows

Saludos
« Última modificación: 13 Octubre 2013, 09:47 am por EleKtro H@cker » En línea



Dsalomon

Desconectado Desconectado

Mensajes: 52


Ver Perfil
Re: (Solucionado) [Batch] Randomizar lineas en un txt?
« Respuesta #14 en: 21 Octubre 2013, 08:21 am »

Código
  1. @Echo OFF & chcp 1252 >NUL & Setlocal enabledelayedexpansion
  2. REM Title %~n0 & Mode con cols=50 lines=3
  3.  
  4. Set /A "MAX=5"
  5. Set "TMP_Playlist=%Temp%\Playlist.tmp"
  6. Set "Playlist=%Temp%\Playlist.m3u8"
  7.  
  8. :List
  9. (
  10. For /F "Tokens=*" %%$ in (
  11.     'Dir /B /S "%~dp0" ^| Findstr /I /R "\.avi$ \.mkv$"'
  12. ) DO (
  13.     Echo !Random!!Random!!Random!;%%$
  14. )
  15. )>"%TMP_Playlist%"
  16.  
  17. :Randomize
  18. (
  19. Echo #EXTm3u8
  20. For /F "Tokens=2* Delims=;" %%$ in (
  21.     'Type "%TMP_Playlist%" ^| Sort '
  22. ) DO (
  23. Set /A "Count+=1"
  24.     If !COUNT! LSS %MAX% (
  25.         Echo %%$
  26.     ) ELSE (
  27.         Goto :Run
  28.     )
  29. )
  30. )>"%Playlist%"
  31.  
  32. :Run
  33. Start /B "" "%PROGRAMFILES(X86)%\Winamp\winamp.exe" "%Playlist%" || (Exit /B 1)
  34.  
  35. Exit /B 0

Saludos!


Maestro después de un par de días viendo el resultado del código que tuviste a bien a facilitar y aun mejorar, le estoy hallando un inconveniente... pero tu dimelo si no me equivoco...

efectivamente el código toma en este caso de una carpeta de manera aleatoria 5 archivos... pero observando... me fije que siempre toma los 5 primeros de la carpeta y a esos 5 les aplica el RANDOM... habrá alguna manera que de toda la carpeta (en mi caso la carpeta tiene mas de 50 archivos) tome 5 aleatorios no dependiendo de su nombre, para que al final juege los 50 y tome 5 de manera aleatoria...?

ahora si me confundo ... perdona las molestias muchas...
En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.878



Ver Perfil
Re: (Solucionado) [Batch] Randomizar lineas en un txt?
« Respuesta #15 en: 21 Octubre 2013, 11:22 am »

Hola

Estás equivocado, todos los archivos (todos, no los 5 primeros) se escriben de forma ordenada en el archivo Playlist.tmp, pero añadiéndole un número aleatorio a la izquierda, de esta manera:

Código:
70341602815107;C:\archivo1
48242686216352;C:\archivo2
65562921929452;C:\archivo3
240062826615990;C:\archivo4
11032263219974;C:\archivo5
etc...

Luego la lista se ordena de menor a mayor según los números aleatorios, consiguiende así un shuffle, los nombres de la derecha quedan desordenados:

Código:
11032263219974;C:\archivo5
240062826615990;C:\archivo4
48242686216352;C:\archivo2
65562921929452;C:\archivo3
70341602815107;C:\archivo1
etc...

Y por último se eliminan los números, y se toman los primeros 5 archivos de la lista:

Código:
C:\archivo5
C:\archivo4
C:\archivo2
C:\archivo3
C:\archivo1

Nunca tendrán el mismo orden, ni serán siempre los mismos archivos.

PD: He vuelto a probar el código por si acaso, pero no, no llevas razón, nunca obtengo los mismos archivos.

Si le has hecho alguna modificación al código original deberías postearla para buscar y corregir el error.

Saludos!
« Última modificación: 21 Octubre 2013, 11:24 am por EleKtro H@cker » En línea



Dsalomon

Desconectado Desconectado

Mensajes: 52


Ver Perfil
Re: (Solucionado) [Batch] Randomizar lineas en un txt?
« Respuesta #16 en: 21 Octubre 2013, 18:18 pm »

 ;-) gracias maestro... no le hice mucho mas que definir los formatos... pero revisare en una virtual para postear mas adelante... desde ya muchas gracias..
En línea

Dsalomon

Desconectado Desconectado

Mensajes: 52


Ver Perfil
Bugs o inconsistencias hayadas en produccion
« Respuesta #17 en: 31 Mayo 2014, 09:06 am »

Buena noche… reaperturo el tema con una pregunta e inquietud si se me permite

Este código proporcionado es una de las aportaciones más fantásticas que me he encontrado en mi vida de internauta… por lo cual dia a día es una de mis herramientas de trabajo… durante los años de uso he notado 3 problemas o bugs o la verdad no sé cómo llamarles y para ir al grano proporcionare primero las variantes que le he añadido…


Código
  1. @Echo OFF & chcp 1252 >NUL & Setlocal enabledelayedexpansion
  2. REM Title %~n0 & Mode con cols=50 lines=3
  3.  
  4. Set /A "MAX=10"
  5. Set "TMP_Playlist=%Temp%\Playlist.tmp"
  6. Set "Playlist=%Temp%\Playlist.m3u8"
  7.  
  8. :List
  9. (
  10. For /F "Tokens=*" %%$ in (
  11.     'Dir /B /S "%~dp0" ^| Findstr /I /R "\.avi$ \.mkv$"'
  12. ) DO (
  13.     Echo !Random!!Random!!Random!;%%$
  14. )
  15. )>"%TMP_Playlist%"
  16.  
  17. :Randomize
  18. (
  19. For /F "Tokens=2* Delims=;" %%$ in (
  20.     'Type "%TMP_Playlist%" ^| Sort '
  21. ) DO (
  22. Set /A "Count+=1"
  23.     If !COUNT! LSS %MAX% (
  24.         Echo %%$
  25.     ) ELSE (
  26.         Goto :Run
  27.     )
  28. )
  29. )>"%Playlist%"
  30.  
  31. :Run
  32. if %PROCESSOR_ARCHITECTURE%==x86 (
  33.  Start /B "" "%PROGRAMFILES%\Winamp\winamp.exe" "%Playlist%" || (Exit /B 1)
  34. ) else (
  35.  Start /B "" "%PROGRAMFILES(X86)%\Winamp\winamp.exe" "%Playlist%" || (Exit /B 1)
  36. )
  37.  
  38. Exit /B 0

El resultado es que me crea y reproduce un playlist en el amigo Winamp…
con la cantidad de 10 archivos en un playlist en Winamp, los cuales fueron definidos en la variable "MAX=10"

1.   el primer problema o bug es que al encontrar un archivo con caracteres especiales digamos tildes, eñe, etc. Los añade pero no los reproduce haciendo que winamp se culgue al no saber interpretar el archivo

Ejemplo: "Líneas de la vida.avi" la muestra como "L�neas de la vida" dentro del playlist del reproductor y cuelga Winamp por que no lo puede reproducir


2.   al ejecutarse en el código en forma de Batch crea la lista correctamente, generando un playlist de 10 archivos de video.


Después aunque añada manualmente al playlist,  por alguna razón la reproducción se detiene en el archivo final… aunque después haya añadido un archivo o archivos, no entiendo por qué pero lo hace.

3.   Y como el archivo batch lo uso por lo general en carpetas con determinada colección de archivos y ya lo había mencionado

El RANDOM siempre elige el mismo juego de archivos

Suponiendo que tengo 10 archivos de video en una carpeta y el código crea un playlist con 5 archivos RAMDOM siempre elige los mismos 5 solo que los aplica aleatoriamente aunque tenga 10 la carpeta siempre elige los mismos 5 y les aplica RAMDOM o sea no se ejecuta en los archivos restantes…

La verdad me gustaría mucho entender la lógica del lenguaje para poder hacer  mis propias deducciones, pero mejor solicito ayuda para poder corregirlo.

De antemano Gracias…
En línea

Páginas: 1 [2] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[Batch] Función año bisiesto de 3 líneas.
Scripting
0x0309 5 6,764 Último mensaje 5 Mayo 2009, 16:33 pm
por 0x0309
Leer líneas de archivo no funciona en doble ciclo FOR (batch) (SOLUCIONADO)
Scripting
<ИΘZIЭ(ŦB> 3 8,839 Último mensaje 1 Octubre 2009, 04:13 am
por leogtz
Sentencia batch en varias lineas[Solucionado]
Scripting
50l3r 4 7,685 Último mensaje 27 Marzo 2010, 02:07 am
por 50l3r
[BATCH] Randomizar listas m3u
Scripting
morgothic 9 8,897 Último mensaje 15 Octubre 2012, 13:40 pm
por morgothic
[BATCH]limite en el tamaño de lineas
Scripting
z_ane_666 3 3,347 Último mensaje 4 Julio 2013, 22:23 pm
por zikotik
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines