Dejo el link de referencia del tema donde inicie esto.
https://foro.elhacker.net/scripting/mover_a_otra_carpeta_y_usar_una_archivo_por_orden_de_menor_a_mayor_con_batch-t428033.0.html;msg1989649#msg1989649
Y la referencia de Winamp:
http://forums.winamp.com/showpost.php?p=1953663&postcount=7
Explicación:
Tengo una carpeta llamada “capítulos” con una serie con extensión MP4, AVI, o MKV, ordenados en números de menor a mayor:
Capitulo_001.mp4
Capitulo_002.avi
Capitulo_003.mkv
Capitulo_004.mp4
etc.
Necesito mover el archivo de menor número en su nombre a otra carpeta llamada “emitidos”; Eso funciona de maravilla en el código.
Por ultimo ese archivo (ahora en la carpeta “emitidos”) se debe agregar a al editor de listas de reproducción de Winamp y reproducirlo, combinando la Winamp Command Line.
He aquí el código, con algunas mínimas modificaciones del de Elektro:
Código
Este Código se ejecuta en la carpeta actual: %CD% y verifica que exista una carpeta "emitidos", sino la crea dentro de la carpeta actual:
Código
La estructura principal llama a dos etiquetas con la sintaxis de subrutina siguiente:
Citar
CALL :[etiqueta][parametro1, parametro2, parametro3]
La primera llamada:
Código
Según entiendo:
Llamada: etiqueta :MoverSigArchivo y le asigna tres parámetros
parametro1: mp4 se guarda y se referira como %1
parametro2: ruta actual\capitulos y se referira como %2
parametro3: ruta actual\emitidos y se referira como %3
Llamada: etiqueta :PlayEnWinamp y le asigna la variable %SigArchivo% como único parametro
Código
Salida y código de verificación "exitoso" al terminar
Código
Exit /B 0
Etiqueta :MoverSigArchivo y le asigna tres argumentos
argumento1: extension sin comillas: mp4, se guarda como %~1, se asigna la variable %extension%
argumento2: nombre de la carpeta sin comillas: capitulos, se guarda como %~2, se asigna la variable %capitulos%
argumento3: nombre de la carpeta sin comillas: emitidos, se guarda como %~3, se asigna la variable %emitidos%
NOTA:
Con Comillas: %1 resultado: "parámetro de varias letras"
Sin Comillas: %~1 resultado: parámetro de varias letras
Código
:MoverSigArchivo
FOR analiza y asigna la variable con nombre: #
sintaxis FOR para archivos
FOR %%parámetro IN (establecer comandos o rutas) DO (acciones)
PARA %%# EN (carpeta: capitulos\todos los archivos.mp4) DO (accion mover) salir y verificar
SET declara la variable: "SigArchivo" que devuelve el modificador %%~f#: ruta y el archivo de número menor
MOVE (argumento1, argumento2) DO (MOVER %%~f# a carpeta emitidos\%%~nx#)
REFERENCIAS:
%%~f#: ruta del archivo con número menor (no estoy seguro)
%%~nx#: nombre de archivo y extensión
1>NUL: no direcciona salida de texto
EXIT /B 0: salida con código "exitoso"
GOTO EOF: terminar funciones y continua a la etiqueta :PlayEnWinamp" y sus comandos)
Código
Etiqueta: PlayEnWinamp y le asigna tres argumentos
argumento1: Asignar una variable llamada Filepath argumento %~1 definido extensión en la etiqueta MoverSigArchivo
argumento2: Asignar una variable llamada wampDir: ruta de instalación de winamp, argumento %~2
IF el argumento: carpeta capitulos NEQ: no es igual
n+1 aumenta el numero
Código
:PlayEnWinamp Start /B "WinAmp" "%wampDir%\winamp.exe" "%filepath%" Goto:EOF
Conclusiones:
El código funciona hasta la parte donde mueve los archivos,
Pero al enlistar el archivo la ruta sigue en la carpeta capítulos y no emitidos…
No se si me pueden ayudar a ver como corregir que enliste el ultimo archivo movido a la carpeta “emitidos”.
Buena madrugada.