Hola
Me alegra verte de nuevo por el foro
Respuesta Corta:Tú script está bien, hay ciertas cosas que se pueden mejorar (como la sintaxis, espacios en blanco, y reemplazar el pause dentro del For por la instrucción apropiada... para salir del búcle), pero se puede decir que está bien.
El script de @
Black Dragon se podría decir que también está bien, aunque ha cometido algunos fallos de escritura por ejemplo al nombrar una variable de una manera y usarla con otro nombre distinto, y el script no funcionará con archivos que contengan espacios en el nombre ya que
encerró NO encerró los strings con comillas dobles, pero por lo que he visto en tu script estás capacitado para corregir tú mismo esos pequeños fallos de sintaxis que él tuvo.
Respuesta Larga:1) Batch es el lenguaje menos apropiado y el más limitado para este tipo de tareas, deberías intentar usar cualquier otro lenguaje que te permita al menos implementar controles de errores básicos y eficientes cuando de trata de la interacción con archivos ""delicados"".
2) Si todos los archivos contenidos en ese directorio tienen esa enumeración incrementativa (001 > 002 > ... > 100) entonces no es necesario guardar un registro de los archivos que vayas moviendo, simplemente puedes listar los archivos y mover el primero que se encuentre cómo estás haciendo en tu Script, el primero que se encuentre siempre será el sigueinte de la lista (001 > 002 > 003, etc) ya que Batch por defeecto utiliza un ordenamiento por String.
Si los archivos estuviesen enumerados tal que así: 1 > 2 ... > 10, entonces la cosa ya cambia y ahí si que practicamente
te obligaría a no utilizar Batch para esa tarea, ya que entonces habría que implementar un ordenamiento de tipo "Bubble Sort" y eso es algo muy tedioso en un lenguaje limitado como es Batch ...cualquier cosa es tediosa.
En todo caso, si guardas un registro como en el ejemplo del compañero @Black Dragon, te sugiero hacerlo en el registro de Windows, no en un archivo de texto, simplemente por seguridad, dada la situación.
3) No existe modo alguno mediante Batch para interactuar/manejar Winamp de forma eficiente (ni siquiera recurriendo a los parámetros comandline de Winamp),
en otros lenguajes puedes literalmente leer el proceso (utilizando técnicas de
IPC) para añadir archivos a la lista actual de forma eficiente, aunque esto conlleva una elaboración mucho más elevada del código y una mayor adquisición de conocimientos y entendimiento de lo que estás haciendo, pues alguien que está aprendiendo a programar en Batch no es capaz de elaborar el código necesario, pero por suerte siempre existen APIs que te harían todo el trabajo por ti.
La idea de crear una lista multimedia de tipo m3u me parece buena y simple, es lo que yo hago cuando quiero reproducir una lista aleatoria de mi PC ya que no tiene mayores dificultades que la de escribir los nombres de archivo en un archivo de texto plano, pero eso tiene el inconveniente de que al cargarla en Winamp se reemplazará por la lista actual, y no se si eso es lo que quieres.
Winamp dispone algunos parámetros que puedes usar desde la consola (ej: /ADD ), pero no funcionarán en todos los escenarios... bueno, lo cierto es que a cada usuario le puede funcionar de una manera distinta, por ejemplo si no has registrado winamp en el menú contextual desde las opciones de la aplicación, no funcionará dicho comando por estúpida que parezca la relación entre ambos, ya que Winamp es una aplicación que está bastante bugueada en el sentido de las asociaciones y la integración del menú contextual, y sus handlers para reproducir y añadir archivos a una lista, es algo que hace ya tiempo discutí con los desarrrolladores pero por lo visto no les apetece corregir/mejorar dichas características, o no saben cómo hacerlo.
Hay ciertas aplicaciones commandline que te ayudan a manejar winamp desde la consola, como por ejemplo CLAMP y CLEVER, desconozco sus funcionalidades (no se de que son capaces), pero como último recurso (si no te funciona el parámetro /ADD ni quieres aprender otro lenguaje) siempre puedes recurrir a la utilización de dichas herramientas commandline desde Batch.
Saludos!