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)
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
* en las primeras comillas era un
no me lee el signo
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.
Eso mismo xD…
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.
¿Agregar un Programa externo? ¿Agregarlo en que sentido?
No entiendo bien lo que quieres hacer.
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…
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.exeNo sabria decirte bien como ayudarte. Lo siento.
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?
DeberÃas hacer uno mas, habÃa algunos comandos que no me los sabia.
Muchas gracias de nuevo.
Adiós.
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)
OK, hay te ves.
Bye…
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,
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ó?
en q idioma ablan no entendi nada d lo q dijern
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.
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!
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!
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.
Genial! justo lo que estaba buscando!!
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
Ronsincola, no se puede enviar Emails desde Batch.
JaLeRu Gracias por tu respuesta y otra cosa y para enviar archivos via ftp a un espacio web? Se podria hacer
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.
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
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
¿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.
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 =)
alguien q me ayude a crear un batch para que al iniciar windows reprodusca una lista de reproducion
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.exehola 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
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
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
alberto, respondiendote a ti, podrias hacer que en vez de buscar 00, que busque ??-??-??-??-??-??, igual asi si que puedes
salu2
Yo quisiera pedirte de favor si me ayudas a crear un batch que no se borre o crear un batch que haga que aparezca de nuevo.
En mi trabajo usamos 20 computadoras y gracias a ti pude crear un batch para abrir una direccion IP larguisima con este codigp start http://www.google.com por ej. pero algunas veces por error lo borran y hay que escribirlo manualmente es una lata porque diario borran el historial del internet. Muchas gracias por darte este tiempo para contestar todas las preguntas te admiro mucho que energia.
JaLeRu, gracias a tus fantásticos tutoriales aprendi batch e hice un monton de utilidades de las que estoy orgulloso (tengo 15 años)
pero el otro dia me propuse hacer un videojuego en BATCH asique me puse manos a la obra…
pero tuve un problemón:
Como se detectan las pulsaciones del teclado en BATCH???
Porque con set /p no valdrÃa!!!