Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: seu230 en 3 Octubre 2018, 03:11 am



Título: Ayuda con batch para crear archivos de texto plano
Publicado por: seu230 en 3 Octubre 2018, 03:11 am
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:

Código:
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:

Código:
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:

Código:
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


Título: Re: Ayuda con batch para crear archivos de texto plano
Publicado por: **Aincrad** en 3 Octubre 2018, 04:05 am
Código
  1. @echo off
  2.  
  3. for /R %%x in (*.mp3) do (
  4.  
  5. echo LoadPlugin("C:\Program Files\AviSynth\plugins\NicAudio.dll"^) > %%~dx%%~px%%~nx.avs
  6. echo A = NicMPG123Source("%%~dx%%~px%%~nx.mp3"^) >> %%~dx%%~px%%~nx.avs
  7. echo V = ImageSource("D:\logo karaokear canal 4 redimencionado.jpg"^) >> %%~dx%%~px%%~nx.avs
  8. echo return(V,A^) >> %%~dx%%~px%%~nx.avs
  9. )
  10. exit

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


Título: Re: Ayuda con batch para crear archivos de texto plano
Publicado por: EdePC en 3 Octubre 2018, 05:07 am
- 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
  1. FOR /R %%x IN (*.mp3) DO (
  2.  echo LoadPlugin("C:\Program Files\AviSynth\plugins\NicAudio.dll"^) > %%~dpnx.avs
  3.  echo A = NicMPG123Source("%%x"^) >> %%~dpnx.avs
  4.  echo V = ImageSource("D:\logo.jpg"^) >> %%~dpnx.avs
  5.  echo return(V,A^) >> %%~dpnx.avs
  6. )


Título: Re: Ayuda con batch para crear archivos de texto plano
Publicado por: seu230 en 3 Octubre 2018, 05:27 am
Funciona! muchas gracias a ambos ya intuia que era algo que tenia que ver con los parentesis. Saludos


Título: Re: Ayuda con batch para crear archivos de texto plano
Publicado por: seu230 en 3 Octubre 2018, 07:33 am
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ódigo:
C:\Program Files\Format Factory\FFModules\Encoder\MP4Box -add test.h264 -add test.aac file.mp4

en mi batch si lo invoco asi:

Código:
@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


Título: Re: Ayuda con batch para crear archivos de texto plano
Publicado por: Eleкtro en 3 Octubre 2018, 10:59 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ódigo:
"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:
Código:
Start /W "" "C:\Program Files\Format Factory\FFModules\Encoder\MP4Box.exe" -add "archivoaudio.mp3" -add "archivovideo.avi" "audiomuxvideo.mp4"
...pero resulta innecesario.

Saludos.


Título: Re: Ayuda con batch para crear archivos de texto plano
Publicado por: seu230 en 5 Octubre 2018, 10:28 am
Muchisimas gracias esta funcionando todo ok  :D