Programación en Batch 4º Parte

Esta es la cuarta parte de otros tres tutoriales más. Ve aquí El primero, El Segundo y El tercero.
En el tutorial pasado vimos como ejecutar acciones en gran cantidad de archivos a la vez y además creamos un código que creaba listas de reproducción para winamp.
Como prometí, ahora les enseñare a hacer listas pero para Windows Media Player, agrege un tema más para que entiendan mejor el código de la lista.

Indice:

  • Acortar direcciones
  • Listas de reproducción para Windows media Player.

Acortar direcciones:

Cuando usamos un for para recorrer los archivos nos devuelve la dirección entera del archivo. Esto es molesto, cuando lo que queremos es solo su nombre, o saber su ubicación.
Ahora les voy a enseñar una técnica para acortar esas direcciones.
En el caso por ejemplo de que la variable X tenga la dirección de un archivo y solo quisiéramos saber su extensión, usaríamos:

%~xX

y si quisiéramos saber en que unidad se encuentra:

%~dX

Para entender un poco mejor esto, miremos esto como una sintaxis.
Siempre se usara %~ seguido de una letra que representa lo que queremos obtener (el nombre, la extensión, etc) y por ultimo el nombre de la variable.
Las letras que podemos usar son:

  • f Ruta y Nombre
  • d Nombre Unidad donde se encuentra
  • p Solo ruta
  • n Solo nombre
  • x Extensión
  • s Ruta abreviada
  • a Atributos
  • t Fecha y hora de creación
  • z Tamaño del archivo

Por ejemplo, este programa nos mostrara algunos datos de los archivos que existan en la misma carpeta y directorios superiores.

@echo off
FOR /R %%X in (*) DO (
echo Nombre: %%~nX
echo Extension: %%~xX
echo Tamaño: %%~zX
echo.
)

Como vez, en el caso de los FOR debemos agregar un % extra adelante.

Lista de Reproducción para Windows Media Player:

Más o menos siguiendo el esquema anterior, lo que hize fue ver como era aproximadamente como era un archivo de Lista de Reproducción. Después de un no muy intenso análisis podemos ver que es así.

<smil><body><seq>
<media src="RUTA NO FIJA DEL ARCHIVO.mp3" />
</seq></body></smil>

El problema que encontré en la sintaxis de los archivos es que al intentar hacer un echo a los signos < y > el código dejaba de funcionar. Pues encontré la solución, simplemente agregando el signo ^ antes de cada < o >. Pues así quedó:

@echo off
echo. > Lista.wpl
echo ^<smil^>^<body^>^<seq^> >> Lista.wpl
FOR %%X in (*.mp3) DO (
echo ^<media src="%%~nX%%~xX" /^> >> Lista.wpl
)
echo ^</seq^>^</body^>^</smil^> >> Lista.wpl
start Lista.wpl
exit

Explicación:

(Si tienes dudas sobre esta explicación, es que no entendiste bien los 3 tutoriales anteriores)

  • @echo off
    Eliminamos el Eco
  • echo. > Lista.wpl
    Creamos un nuevo archivo Lista.wpl o borramos su contenido si existe
  • echo ^<smil^>^<body^>^<seq^> >> Lista.wpl
    Escribimos <smil><body><seq> en la primera linea del archivo Lista.wpl
  • for %%X in (*.mp3) DO ()
    Ejecutar la acción entre paréntesis para cada archivo encontrado con extensión .mp3
  • echo ^<media src=”%%~nX%%~xX” /^> >> Lista.wpl
    Escribir <media src=”NombreArchivo+Extencion”/> en la siguiente linea de Lista.wpl, esta accion se repite por cada mp3 encontrado.
  • echo ^</seq^>^</body^>^</smil^> >> Lista.wpl
    Escribir </seq></body></smil> alfinal del archivo.
  • start Lista.wpl
    Abrir la lista con el programa predeterminado
  • exit
    Cerrar ventana DOS

Pues, eso es todo por hoy. Ojala les sea de gran utilidad. Hasta la próxima ;) (Si es que me da para más)

Share and Enjoy:
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google Bookmarks

Post Relacionados:

34 Respuestas to “Programación en Batch 4º Parte”

  1. El_KeNnY_BPC says:

    yo entendi al tiro como es… el signo ^ es para aquellos comandos que tengan un “” en alguna parte de ellos… y como el ____>___._ solo copia en otro archivo lo que esta antes de “>” en lo que esta despues de “>”, el archivo se crea solo hasta el primer “>”… ni yo entendi lo que yo dije… si me leen mejor lean lo de arriba porq lo mio no lo entienden ni cag _ _ _ _ xD

    El_KeNnY_BPC

    no se para que lo posteo si no lo entiendo ni yo… pero alguien lo va a entender

  2. El_KeNnY_BPC says:

    * en las primeras comillas era un

  3. El_KeNnY_BPC says:

    no me lee el signo :(

  4. JaLeRu says:

    El signo ^ se usa para signos que el batch traduce como comandos. Como el signo > lo ocupa para escritura de archivos. usamos antes ^ para que lo cuente como un caracter y no como un comando.

  5. El_KeNnY_BPC says:

    Eso mismo xD…

  6. Fisher's says:

    Hola JaLeRu!

    Me han gustado muchos sus Tutoriales, son muy interesantes en cuanto al manejo del Batch, y claramente efectivos.

    Me interesaría agregar un programa externo al batch que estoy creando, es esta herramienta: http://www.gmer.net/catchme.php

    Es un Anti-Rootkit, que es de mucha utilidad para encontrarlos y es utilizado por algunos analistas en el Malware.

    Muchas Gracias por su atención JaLeRu!

    Adiós.

  7. JaLeRu says:

    ¿Agregar un Programa externo? ¿Agregarlo en que sentido?
    No entiendo bien lo que quieres hacer.

  8. Fisher's says:

    Hola, bueno, no se si es un error mio, eh visto herramientas de eliminación de Malwares que traen integrado este programa, en este mismo les genera un reporte. También hay otras como el NirCmd, este si se como ponerlo, es para mas funcionalidades en el linea de comandos.

    Un ejemplo es la herramienta SDFix: http://downloads.andymanchesta.com/RemovalTools/SDFix_ReadMe.htm

    Que al descargarla puedes editar y ver el contenido del Batch, pero se me resulta un poco complicado, este incluye el Catchme Detector de GMER.

    Muchas Gracias, es solo eso.

    Adiós… :)

  9. JaLeRu says:

    La verdad, me es muy complejo a mi también.
    Si lo que quieres es hacer un Batch como exe. Existen programas que lo hacen.
    Si quieres que un EXE ejecute un Batch, pues no se.
    Si quieres que un Batch ejecute un Exe.
    start nombre.exe

    No sabria decirte bien como ayudarte. Lo siento.

  10. Fisher's says:

    Igual muchas gracias JaLeRu, estaré revisando bien como podré o al menos intentar hacerlo. Por lo demás de los tutoriales de Batch están exelentes, solo hay 4 nomas? :D

    Deberías hacer uno mas, había algunos comandos que no me los sabia.

    Muchas gracias de nuevo.

    Adiós.

  11. JaLeRu says:

    El tiempo no me ha dado para más que publicar cosas como música y datos. Pero si tengo más tiempo escribiré nuevos tutoriales. (No se si sea de Batch, pero si tutoriales)

  12. Fisher's says:

    OK, hay te ves. :D

    Bye…

  13. njara says:

    Wenas,

    Me han gustado tus tutoriales… pero tengo una serie de dudas, a ver si me puedes echar una mano.

    He generado un bat que te pide introducir una serie de parámetros. Este bat cada vez que lo ejecutas tienes que introducir los parametros.(hasta aqui ningun problema).

    Pero yo lo que quiero es generar un nuevo bat a partir de estos parámetros y a partir de ahi cada vez que lo ejecute no se tengan que introducir dichos parámetros.

    No sé si esto se puede hacer….

    Espero noticias, un saludo,

  14. JaLeRu says:

    M… Se me ocurren dos ideas. Que al introducirse este parámetro el Bat cree uno nuevo (Que no necesita la introducción del parámetro) y se borra a si mismo, abre el nuevo bat y se cierra el mismo para que luego al momento de cerrar el bat nuevo se borre el antiguo..
    Así tendremos ahora un bat que no necesita la inserción de el parámetro y el otro abra desaparecido.

    ¿Se entendió?

  15. Kl2 says:

    en q idioma ablan no entendi nada d lo q dijern

  16. JaLeRu says:

    Se llama español. Te lo presento.

    Se parece a tu idioma solo que decimos “Que” en vez de “q” y escribimos “ablan” con H, “Hablan”.
    Entre otros detalles como acentos en “Entendí”, “De” y “dijeron”.

    Si intentas con esfuerzo podrás entender nuestro complejo dialecto.

  17. El_KeNnY_BPC says:

    hola jaleru… tanto tiempo sin hacerte una pregunta… pero… necesitaba hacerte una pregunta.. si es que lo sabes…

    Primero:

    Quiero cambiar la hora y fecha de mi computador…

    date –set “%var% %vari%”

    Segundo:

    Quiero cambiar la hora y fecha de la “BIOS”…

    ???

    Gracias de antemano! :)

  18. inglm says:

    Saludos muy buenos los tutoriales sabes me gustaria saber si es posible eliminar la primera parte del nombre de un archivo solamente, por ejemplo:
    Tenemos: Carros – Ford.xls y quiero cambiarlo a Ford.xls

    (se que si utilizas Ren ????*.xls ????.xls queda Carros.xls, pero no se como hacer para que funicone como el ej q coloco)

    Gracias!

  19. JaLeRu says:

    con un FOR revisar todos los que tengan por ejemplo la palabra carlos en el principio. con carlos*
    Luego toma el nombre del archivo y procesalo y elimina la palabra carlos del texto, o los 6 primeros caracteres.
    Para hacer esto existia una funcion de batch, pero ya no me acuerdo. Busca en google. Luego renombra el archivo con ese nombre.

    Suerte.

  20. Najan says:

    Genial! justo lo que estaba buscando!!

  21. Ronsincola says:

    Hola Me ha gustado muxho tu manual pero tengo un duda

    Se puede enviar correos utilizando batch, mas concreto se puede enviar archivos como se fueran archivos adjuntos a una direccion de gmail

    Gracias

  22. JaLeRu says:

    Ronsincola, no se puede enviar Emails desde Batch.

  23. Ronsincola says:

    JaLeRu Gracias por tu respuesta y otra cosa y para enviar archivos via ftp a un espacio web? Se podria hacer

  24. JaLeRu says:

    No lo se, pero creo que no.
    Ronsincola, debes recordar que este no es un lenguaje de programación.
    Para eso te recomiendo que aprendas C, C++, si quieres más cosas relacionadas con internet aprendé PHP, HTML, CSS o AS3 (Flash).

    En el primer tutorial ya especifique, que Batch no es más que una serie de comando que se ejecutan en el DOS de windows.

  25. maxx says:

    como cambiar o remplazar cadenas dinamicas para usarlo como password, por ejemplo si mi password es maxx, pero quiero q en pantalla salga solo xxxx, gracias

  26. Salva says:

    Hola, me encanta tu blog y me es muy util, estoy usando batch junto a javascript para hacer un programita bastante util.
    Necesitaria saber, como hago para escribir el caracter ^ dentro de otro archivo, ya probe poniendo, por ejemplo ^^ pero cualquier parte del codigo que contenga esto simplemente no funciona

  27. JaLeRu says:

    ¿Para que quieres usar ese simbolo? Es realmente nesesario?
    No se si se pueda escribir, por que como ya esplique se usa para poder escribir simbolos que no se pueden escribir.

  28. Salva says:

    Era para que escriba un archivo.bat que escribe un archivo .html, pero em di cuenta que usando etiquetas y un if simplemente podia hacerlo con 1 bat jaja

    Gracias igual =)

  29. misa misa says:

    alguien q me ayude a crear un batch para que al iniciar windows reprodusca una lista de reproducion

  30. JaLeRu says:

    Misa misa Google, sale mucha informacion de como iniciar Batchs con Windows. (Lo mas simple es colocarlos en la carpeta “inicio”)
    Y para lo de la lista de reproduccion, creo que el tutorial nº 3 puede ayudarte mucho.
    http://jestudio.cl/blog/programacion-en-batch-3%C2%BA-parte/

    Prueba con algo así:
    start "Lista" Reproductor.exe

  31. oswaldo says:

    hola a todos en este momento necesito una gran ayuda necesito sacar un archivo de una pc comprimirlo y enviarlo por correo, hasta ahora ya tengo un batch que me realiza la copia del archivo y me lo comprime pero lo que no se como hacer en enviar ese archivo por correo y que se realice automaticamente con un batch he buscado en todos lados y no encuentro la solucion, talvez ustedes me pueden ayudar

    gracias

  32. alberto says:

    que tal: bueno tutorial.

    tengo una pregunta esperando que me puedas ayudar, necesito un batch que me la mac address del equipo y con un espacio el hostname de la maquina

    he hecho lo siguiente

    getmac >> nuevo.txt
    find /i “00″ nuevo.txt > nuevo.txt aqui ya tengo solo una linea donde esta la mac
    for /L %%i IN (1,18) DO () aqui ya no supe que hacer para extraer solo la mac.

    bueno mi problema es que no se como decirle que los primeros 18 caracteres son los de la mac y que lo pase a un archivo nuevo.

    espero me puedas ayudar y muchas gracias

  33. Aritz says:

    Hola, he visto que alguien queria saber como abrir un .bat desde un .exe, eso, para hacerlo en batch, abría que usar un compilador(un programa que convierte un .bat en un .exe) o programarlo en otro lenguaje (por ej. C, C++)

    Salu2

  34. Aritz says:

    alberto, respondiendote a ti, podrias hacer que en vez de buscar 00, que busque ??-??-??-??-??-??, igual asi si que puedes

    salu2

Deja un comentario


JaLeRu Blog vive gracias a WordPress
Entradas RSS y Comentarios RSS.