Ayuda con batch para crear archivos de texto plano

Iniciado por seu230, 3 Octubre 2018, 03:11 AM

0 Miembros y 1 Visitante están viendo este tema.

seu230

Hola gente del foro despues de años vuelvo a conectarme espero puedan ayudarme tengo una carpeta con varios mp3 y quiero crear un archivo de texto plano .avs para cada mp3 con el mismo nombre del archivo mp3 y en la misma carpeta con la siguiente sintaxis:

LoadPlugin("C:\Program Files\AviSynth\plugins\NicAudio.dll")
A = NicMPG123Source("D:\artista - cancion.mp3")
V = ImageSource("D:\logo.jpg")
return(V,A)


Lo único que cambia en cada .avs que quiero crear es el nombre de artista y cancion, estuve intentando lo siguiente con un archivo .bat:

for /R %%x in (*.mp3) do (

echo LoadPlugin("C:\Program Files\AviSynth\plugins\NicAudio.dll") > %%~dx%%~px%%~nx.avs
echo A = NicMPG123Source("%%~dx%%~px%%~nx.mp3") >> %%~dx%%~px%%~nx.avs
echo V = ImageSource("D:\logo karaokear canal 4 redimencionado.jpg") >> %%~dx%%~px%%~nx.avs
echo return(V,A) >> %%~dx%%~px%%~nx.avs
)
exit


Pero no me funciona me crea los archivos avs pero no hay la correspondencia con la sintaxis que quiero, luego probe agregando comillas adicionales a cada linea de cada texto, osea asi:


for /R %%x in (*.mp3) do (

echo "LoadPlugin("C:\Program Files\AviSynth\plugins\NicAudio.dll")" > %%~dx%%~px%%~nx.avs
echo "A = NicMPG123Source("%%~dx%%~px%%~nx.mp3")" >> %%~dx%%~px%%~nx.avs
echo "V = ImageSource("D:\logo karaokear canal 4 redimencionado.jpg")" >> %%~dx%%~px%%~nx.avs
echo "return(V,A)" >> %%~dx%%~px%%~nx.avs
)
exit

Y si me funciona pero como digo me crea comillas adicionales al inicio y final de cada linea de los archivos .avs ¿en que estoy fallando? muchas gracias

**Aincrad**

Código (bash) [Seleccionar]
@echo off

for /R %%x in (*.mp3) do (

echo LoadPlugin("C:\Program Files\AviSynth\plugins\NicAudio.dll"^) > %%~dx%%~px%%~nx.avs
echo A = NicMPG123Source("%%~dx%%~px%%~nx.mp3"^) >> %%~dx%%~px%%~nx.avs
echo V = ImageSource("D:\logo karaokear canal 4 redimencionado.jpg"^) >> %%~dx%%~px%%~nx.avs
echo return(V,A^) >> %%~dx%%~px%%~nx.avs
)
exit


Listo, a mi me sirve así. pruebalo y me dices.




EdePC

- Cierto, se tiene que escapar el paréntesis de cierre ^) para que no se malinterprete con el paréntesis del FOR.

- También recordar que se pueden combinar los modificadores de referencia a las variables: %%~dpnx.avs equivale a %%~dx%%~px%%~nx.avs, y de no necesitar dichos modificadores mejor utilizar la variable en sí: %%x equivale a %%~dx%%~px%%~nx.mp3

- Obteniendo al final:

Código (DOS) [Seleccionar]
FOR /R %%x IN (*.mp3) DO (
  echo LoadPlugin("C:\Program Files\AviSynth\plugins\NicAudio.dll"^) > %%~dpnx.avs
  echo A = NicMPG123Source("%%x"^) >> %%~dpnx.avs
  echo V = ImageSource("D:\logo.jpg"^) >> %%~dpnx.avs
  echo return(V,A^) >> %%~dpnx.avs
)

seu230

Funciona! muchas gracias a ambos ya intuia que era algo que tenia que ver con los parentesis. Saludos

seu230

Una ultima consulta cuando llamo al exe de algun programa que funciona linea de comandos y esta contenida en una ruta que contiene espacios como debo llamarlo por ejemplo

Aqui por ejemplo el programa mp4box que se maneja por linea de comandos esta dentro de format factory que lleva espacio
C:\Program Files\Format Factory\FFModules\Encoder\MP4Box -add test.h264 -add test.aac file.mp4

en mi batch si lo invoco asi:

@echo off
C:\Program Files\Format Factory\FFModules\Encoder\MP4Box -add "archivoaudio.mp3" -add "archivovideo.avi" "audiomuxvideo.mp4"
pause


Me da error "C:\program no se reconoce como una linea de comandos" ¿como se soluciona eso? Mil gracias nuevamente

Eleкtro

#5
Cita de: seu230 en  3 Octubre 2018, 07:33 AM
Me da error "C:\program no se reconoce como una linea de comandos" ¿como se soluciona eso? Mil gracias nuevamente

Sencillamente encierra la ruta entre comillas dobles al igual que hiciste con los argumentos del programa...
"C:\Program Files\Format Factory\FFModules\Encoder\MP4Box.exe" -add "archivoaudio.mp3" -add "archivovideo.avi" "audiomuxvideo.mp4"

O también puedes utilizar el comando Start de la siguiente manera:
Start /W "" "C:\Program Files\Format Factory\FFModules\Encoder\MP4Box.exe" -add "archivoaudio.mp3" -add "archivovideo.avi" "audiomuxvideo.mp4"
...pero resulta innecesario.

Saludos.








seu230