programación en batch 1º parte

28
Programación en Batch 1º Parte. En este tutorial hablaremos sobre cómo manejar algunas funciones de Windows mediante archivos Batch. Batch, según Wikipedia es: Es un archivo de procesamiento por lotes: se trata de archivos de texto sin formato, guardados con la extensión *.bat que contienen un conjunto de comandos DOS. Cuando se ejecuta este archivo bat, los comandos contenidos son ejecutados en grupo, de forma secuencial, permitiendo automatizar diversas tareas. Cualquier comando DOS puede ser utilizado en un archivo batch. Hay que aclarar Batch que no es un Lenguaje de Programación. Es un archivo de código que contiene comandos del, Shell de Windows, llamado MS-DOS, que pueden ejecutar desde Inicio- >Ejecutar->CMD. Hay dos maneras de ejecutar comandos Batch. Desde el Shell de Windows. Escribiéndolos en un archivo de texto con extensión .bat y luego ejecutarlo. Hola Mundo en Batch Comenzaremos creando un Simple y clásico “Hola Mundo”, escribiendo en un archivo de texto el siguiente código. @echo off echo Hola Mundo pause exit Ahora guardemos el archivo como Nombre.bat y lo ejecutamos. Nos aparecerá una pantalla negra que dirá “Hola Mundo”, luego una linea abajo dirá “Presione una tecla para continuar” Explicamos:

Upload: luisinho14

Post on 03-Jul-2015

249 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Programación en Batch 1º Parte

Programación en Batch 1º Parte.

En este tutorial hablaremos sobre cómo manejar algunas funciones de Windows mediante archivos Batch.

Batch, según Wikipedia es:Es un archivo de procesamiento por lotes: se trata de archivos de texto sin formato, guardados con la extensión *.bat que contienen un conjunto de comandos DOS. Cuando se ejecuta este archivo bat, los comandos contenidos son ejecutados en grupo, de forma secuencial, permitiendo automatizar diversas tareas.

Cualquier comando DOS puede ser utilizado en un archivo batch.Hay que aclarar Batch que no es un Lenguaje de Programación. Es un archivo de código que contiene comandos del, Shell de Windows, llamado MS-DOS, que pueden ejecutar desde Inicio->Ejecutar->CMD.

Hay dos maneras de ejecutar comandos Batch.

Desde el Shell de Windows. Escribiéndolos en un archivo de texto con extensión .bat y luego ejecutarlo.

Hola Mundo en Batch

Comenzaremos creando un Simple y clásico “Hola Mundo”, escribiendo en un archivo de texto el siguiente código.

@echo offecho Hola Mundopauseexit

Ahora guardemos el archivo como Nombre.bat y lo ejecutamos. Nos aparecerá una pantalla negra que dirá “Hola Mundo”, luego una linea abajo dirá “Presione una tecla para continuar”

Explicamos:

echo:

Imprime un texto en pantalla, que es el texto que viene después (el que le pasamos como parámetro), que en este caso es “Hola Mundo”. Echo significa eco, por lo mismo “@echo off” elimina el eco, la repetición de la ruta en la que nos encontramos en cada línea código.

pause:

Page 2: Programación en Batch 1º Parte

Como bien se lee, pausa la ejecución del código. Además muestra el texto “Presione una tecla para continuar”

exit:

Cierra la ventana de comandos.

Para dejar más en claro cual sería la diferencia de no ocupar la linea @echo off la imagen de a continuación muestra como se vería la pantalla sin esta linea.

Ahora aprenderemos algunas funciones de Batch:

CD o CHDIR:

Si has trabajado en PHP, te sera fácil entender este concepto. Sirve para cambiar de Directorio o Mostrar el nombre del actual. Para usarlo, CD o CHDIR seguido de la ubicación del directorio al cual nos moveremos.

cd “C:\”

chdir “C:\”

Los ejemplos anteriores hacen exactamente lo mismo, cambian al Disco C

COPY:

Sirve para copiar uno o más archivos a otro destino.

Page 3: Programación en Batch 1º Parte

Su sintaxis es la siguiente:

Copy “Dirección del archivo” “Nueva dirección”

Ejemplo:

Copy "C:\archivo.txt" "C:\archivo2.txt"

Aquí copiaríamos un archivo del Disco C llamado “archivo.txt” como “archivo2.txt”

Para acortar un poco podríamos usar:

cd "C:\"Copy "archivo.txt" "archivo2.txt"

Donde primero cambiamos de directorio al Disco C con cd “C:\” y luego al copiar no tenemos que especificar que esta en el Disco C ya que ya nos encontramos en el.

DEL:

Sirve para eliminar uno o más archivos. Su sintaxis es:

Del “ARCHIVO”

También se puede añadir:

del /f /q “archivo”

Donde no pide confirmación de eliminación (/q) y fuerza al archivo a borrarse ( /f )

Move:

Sirve para mover un archivo. Su sintaxis es:

Move “Dirección Archivo” “Nueva Dirección”

Cls:

Sirve para limpiar el contenido de la pantalla:

Ejemplo:

@echo offecho Hola, Cuando pulses la tecla se borrara el contenido y cambiara por otro.pauseclsecho ¿Ves?

Page 4: Programación en Batch 1º Parte

pauseexit

Si quisiéramos averiguar más sobre las funciones, o conocer algunas nuevas por nuestra propia cuenta podemos escribir en el Shell el nombre del comando seguido de /? y aparecerá toda la información necesaria.

Podemos poner en práctica esto de la siguiente manera:

Abramos el Shell de windows:

Inicio->Ejecutar-CMD

Una vez abierto escribamos:

echo off

Para eliminar el eco.

Luego para borrar el contenido de pantalla escribe:

cls

Ahora veamos la ayuda de la función Copy:

copy /?

Cerremos la ventana:

exit

Ahora vamos a crear un Batch que copie un archivo, luego lo mueva a otro directorio, borre el original y vuelva a copiar el copiado.

En la carpeta donde crearás el archivo .bat crea un archivo de texto llamado copiame.txt. En él, escribe lo que quieras. Este será el archivo que copiaremos.

Ahora el Batch:

@echo offecho Hola, Copiaremos un archivopausecopy "copiame.txt" "copiado.txt"move "copiado.txt" "C:\copiado.txt"del "copiame.txt"cd "C:\"copy "copiado.txt" "copiado2.txt"exit

Page 5: Programación en Batch 1º Parte

Guárdalo en la carpeta como NombreQueTuQuieras.bat, y ejecútalo.

Lo que ha hecho la cadena de instrucciones es más o menos lo siguiente:

Primero apagamos el eco, luego imprimimos en pantalla “Hola, Copiaremos un archivo”

Pausamos el intérprete para que no siga de largo.

A continuación, copiamos el archivo “Copiame.txt” y su copia se llamará “copiado.txt“. La movemos a la carpeta raíz del disco C, y eliminamos el original.

Por ultimo cambiamos de directorio al disco C, copiamos la copia y cerramos el Batch.

Después de que ejecutemos el Batch, si vamos al Disco C, veremos que hay dos nuevos archivos de texto: uno llamado copiado.txt y otro copiado2.txt.

También si vamos a la carpeta del Batch, veremos no está el archivo de texto original, “copiame.txt”.

Creación de nuevos archivos:

Con Batch podemos crear otros archivos. Para ello, tenemos que escribir algo como esto:

echo TEXTO DE PRIMERA LINEA > nombre.extensiónecho TEXTO SEGUNDA LINEA >> nombre.extensiónecho TEXTO SIGUIENTE LINEA >> nombre.extensión

Al escribir echo seguido de un texto y el signo > creamos un archivo con el nombre que siga.

Si ocupamos un echo seguido de un texto y el doble signo > (>>) se escribirá en la siguiente linea vacía del archivo que prosiga.

Hagamos la prueba:

echo Creando un Archivo de texto > nuevo.txtecho Esta es la Segunda linea >> nuevo.txtecho Y esta es la Siguiente >> nuevo.txtecho Esto esta genial >> nuevo.txt

Si ejecutamos eso, la pantalla negra se abrirá y cerrará.

Pero en la carpeta en la que está nuestro batch se abra creado un nuevo archivo “nuevo.txt” que si lo abrimos, dentro estará escrito lo que especificamos.

Personalizando el SHELL

Page 6: Programación en Batch 1º Parte

Seguro que no te gusta mucho el aspecto del Shell.

Aquí veremos como personalizarlo un poco.

COLOR:

Con la función color podemos cambiar los colores de fondo y las letras. Siendo su sintaxis:

COLOR AB

Donde A= El color de el Fondo y B= Color de las letras.

Para ver todos los colores ve el MS-Dos y escribe color/?

TITLE:

Para cambiar el título de la barra de tareas solo escribe:

Title Loquequierascomotitulo

Pause Personalizado:

¿No te gusta que al poner pause salga “Presione una tecla para continuar…”?

Pues si escribes “pause>nul” no aparecerá ni un texto.

Entonces si anteponemos un mensaje, quedaría así.

echo Aprieta cualquier tecla para seguirpause>nul

Además puedes jugar con los caracteres. Aquí un ejemplo, donde cambié los colores y jugué con los caracteres y personalicé el pause:

El código que empleé para esto fue:

Page 7: Programación en Batch 1º Parte

@echo offcolor 30echo ==================================echo = =echo = Personalizado =echo = =echo ==================================echo.echo.echo Esto esta personalizado, para salir presiona una tecla.pause>nulexit

Cabe mencionar que echo. (Echo seguido de un punto)sirve para saltarse una línea.

Matando Procesos:

¿Alguna vez has presionado CTRL+ALT+DELETE?

Si lo haces se abre el Administrador de tarea. En la pestaña procesos salen algunos procesos que están andando en tu pc, haciéndoles clics y apretando “terminar proceso” lo puedes acabar.

Con batch eso es muy fácil, se usa la función:

Taskkill (No funciona en todos los pc, para ver si esta disponible escribe taskkill/?)

Su sintaxis es:

taskkill /f /im proceso.exe

/f Fuerza el término del proceso.

Un ejemplo seria escribir.

taskkill /f /im wmplayer.exe

Si lo ejecutas y tienes el Reproductor de Windows Media abierto, este se cerrará.

ABRIENDO PROCESOS:

Ahora abramos ese proceso que cerramos. Para abrir procesos se usa la función Start que funciona así:

start proceso.exe

También puedes abrir paginas web con tu explorador predeterminado.

Page 8: Programación en Batch 1º Parte

Ejemplo1:

start wmplayer.exe

Se abrirá el Reproductor de Música

Ejemplo2:

start www.google.cl

Se abrirá tu Explorador de Internet en Google.

VARIABLES:

Ahora aprendamos a declarar variables. Para crear una se escribe:

set NOMBREVARIABLE = VALOR

Para llamarla debemos escribir su nombre entre los signos %%

Ejemplo:

@echo offset Nombre= Javier Letelier Ruizecho %Nombre%pause

La pantalla nos mostrara algo así:

Para cambiar el valor solo debemos hacer esto:

set Nombre= Nuevo Valor

Si quieres que tu Variable sea dinámica, osea que el Usuario la elija antepones /p:

set /p Nombre=Escriba su Nombre:

Donde el Batch se pausara solo mostrando el Mensaje que va luego de “=” dejando que se escriba algo.

También podemos multiplicarlas, sumarlas, etc… con /a:

Page 9: Programación en Batch 1º Parte

set numero1=2ser numero2=43set /a suma= %numero1% + %numero2%echo %suma%pauseexit

Si ejecutamos este, nos devolverá la suma de 2 + 43, 45.

Creo que con esto será suficiente.

Ojalá hayan entendido y les haya interesado el batch, que principalmente se puede usar para facilitar algunas tareas de Windows, ya que como veremos en la segunda parte del tutorial se pueden lograr cosas bastante interesantes.

Programación en Batch 2º Parte.

Esta es la segunda parte de mi tip Programación Batch con archivos .bat, así que te recomiendo leerlo si es que no estas instruido en el tema.

A continuación veremos los siguientes temas:

Uso de etiquetas Condicionales Creación de Menús Apagado y Reiniciado de Pc con archivos .bat Leer archivos externos Insertar al Registro Otras cosas útiles

Si te interesa, sigue leyendo.

Uso de etiquetas

Como bien sabemos la lectura de los códigos Batch se leen de una manera lineal, pero existe una forma para que el Batch se salte lineas, o vuelva a alguna anterior. Esto se logra con Etiquetas y la función GOTO.

Para crear una etiqueta solo debemos escribir:

:nombreEtiqueta

Dos punto (:) seguido del nombre que le daremos a la etiqueta. De esta manera el GOTO funciona escribiendo

Page 10: Programación en Batch 1º Parte

GOTO seguido del nombre de la etiqueta, como vemos en el siguiente ejemplo.

@echo offgoto :mietiquetaecho ¿Por que me saltan?:MiEtiquetaecho Hola, esta es la etiqueta y nos saltamos una parte del codigo.pause>nulexit

Dato Interesante:

En Batch las Mayúsculas y Minúsculas no se diferencian.

Condicionales:

El primer condicional que veremos el más usado.

IF:

Se puede ocupar para comparar, cadenas, números o para saber si existen archivos.

Ejemplo de sintaxis, if %cadena1% == %cadena2% OrdenAEjecutar

Que se podría leer de la siguiente manera. Si cadena1 es igual a Cadena2 ejecutemos la Orden OrdenAEjecutar.

También existe el NOT para ver si no son iguales.

if not %cadena1%== %cadena2% ejecutarAccion

Para saber si un archivo existe, se usa:

if exist “NombreDelArchivo” AccionAEjecutar

o también para ver si NO existe:

if not exist “NombreDelArchivo” AccionAEjecutar

No solo se puede ocupar el signo == para hacer comparaciones.

EQU, que es el equivalente a ==

NEQ, Sirve para cuando queremos ver Desigualdad.

LSS, Para verificar si el numero es Menor

Page 11: Programación en Batch 1º Parte

LEQ, Para verificar si es menor o igual.

GTR, Si es mayor

GEQ, Si es Mayor e igual.

Un ejemplo de esto seria:

if 5 GTR 4 echo Hola

FOR:

Nos sirve para repetir un comando varias veces, en distintas variables.

Un ejemplo, es este:

for /L %%i IN (0,1,21) DO (echo %%i)

En donde /L es para especificar que nuestro for se basara en un conteo de números.

Aquí se repetirá un Echo, que imprimirá números del 0 al 21.

%%i sera el nombre de la variable que almacenara datos

in (0,1,21) aquí especificamos que se repetirá del 0 al 1 y del 1 al 21.

do (echo %%i) Esto es la función que se ejecutara en cada repetición del comando, en este caso un echo que imprimirá la variable.

Batch en algunos casos SI reconoce entre mayúsculas y minúsculas, como en el caso de la variable %%i si esta se llamara %%I no seria reconocida como la misma.

Otro uso que puede ser aplicado en el FOR es el listado de carpetas o archivos, como veremos a continuación:

Listado de archivos:

@echo offFOR %%x in (a*) DO echo %%xpause

Este código, listaría todos los archivos que comienzan con A.

¿Por que? * (asterisco) es un signo comodín, por lo cual al poner a*, estamos diciendo cualquier archivo que tenga una A delante y luego cualquier cosa.

Otro ejemplo del uso de comodín, es listar archivos con extensión común como seria este:

Page 12: Programación en Batch 1º Parte

@echo offFOR %%x in (*.jpg) DO echo %%xpause

Aqui nos estaria listando todos los archivos que tengan la extensión .jpg

Listado de Carpetas:

FOR /D %%x in (a*) DO echo %%x

Es casi lo mismo anterior, tan solo que al indicar /D solo se aplica a directorios.

Si quisiéramos que se listaran los directorios, juntos a los directorios que tienen estos dentro se ocupa /R

FOR /R /D %%x in (a*) DO echo %%x

y si quisiéramos listar todos los documentos que están dentro de una carpeta contando los que están dentro de carpetas se ocupa solamente /R (Sin /D)

FOR /R %%x in (a*) DO echo %%x

Con esto creo que tenemos lo básico, y más importante de los condicionales.

Creación de Menús:

Como ya vimos Condicionales y Etiquetas les enseñare una manera de hacer Menús.

Comenzaríamos indicando las instrucciones y las opciones, de esta manera:

@echo off:Menuclsecho Seleccione su opcion tecleando el numero respectivo.echo.echo 1. Primera Opcionecho 2. Segunda Opcionecho 3. Salir

Luego para seguir ocuparíamos esto:

set /p var=

if %var%==1 goto rimeroif %var%==2 goto :Segundoif %var%==3 goto exitif %var% GTR 3 echo Errorgoto :Menu

Page 13: Programación en Batch 1º Parte

Con esto damos una variable en la que se guardara el numero insertado para luego ser verificado por los condicionales, si el numero es mayor que 3 nos avisara que no existe esa opción. También al principio cree una etiqueta para que se pueda volver

al menú y un “cls” para limpiar la pantalla.

Para terminar creamos las respectivas etiquetas.

rimeroclscolor aEcho Esta es la Primera OpcionEcho Precione una tecla para volver al menuPause>Nulgoto :Menu:Segundoclscolor 1aEcho Esta es la Segunda OpcionEcho Precione una tecla para volver al menuPause>Nulgoto :Menu

Quedando para terminar nuestro codigo así:

@echo off:Menuclsecho Seleccione su opcion tecleando el numero respectivo.echo.echo 1. Primera Opcionecho 2. Segunda Opcionecho 3. Salirset /p var=

if %var%==1 goto rimeroif %var%==2 goto :Segundoif %var%==3 goto exitif %var% GTR 3 echo Errorgoto :Menu

rimeroclscolor aEcho Esta es la Primera OpcionEcho Precione una tecla para volver al menuPause>Nulgoto :Menu:Segundoclscolor 1aEcho Esta es la Segunda OpcionEcho Precione una tecla para volver al menuPause>Nulgoto :Menu

Page 14: Programación en Batch 1º Parte

Bueno, con eso les basta para imaginarse como crear sus menús personales.

Como vieron puede cada sección tener su color, incluso puedes cambiar la barra de titulo.

Ve probando, no pierdes nada.

Apagado y Reiniciado de Pc:

Una cosa muy interesante que puedes hacer con Batch es Apagar y Reiniciar tu Pc, incluso programarlo para que apague a la hora que desees.

Es notablemente fácil.

se ocupa de la siguiente manera el apagado.

shutdown -s -t Tiempo -c “Comentario”

donde -s significa que lo apagaremos, -t debe ir seguido de los segundos que demorara apagar. En windos XP mostrara un contador, con el comentario que va luego de -c, pero en Windows Vista no abra ni un contador, solamente saldrá una alerta con el Comentario, que ni siquiera es obligatorio.

Bueno, de seguro quieres hacer la prueba. La puedes hacer pero antes de eso te recomiendo que leas lo siguiente.

Puedes cancelar el apagado (Antes de que el contador termine) solamente escribiendo shutdown -a ya sea en un archivo de texto con extensión bat, como en el mismo Shell.

Entonces, pues has la prueba

shutdown -s -t 999999 -c "Esto se esta apagando"

Tendrás suficiente tiempo para ejecutar el siguiente código. (11 días )

shutdown -a

Con esto ya probamos los dos y podemos ser felices.

Ok, si en vez de ocupar -s usas -r el PC se reiniciara.

También puedes forzar el cierre de los programas, para que no de tiempo de guardar nada. Tan solo ocupando -f

Page 15: Programación en Batch 1º Parte

Un ejemplo de un Pc, que se Apaga Forzosamente y que puede dañar el pc y luego se reinicia es este:

shutdown -r -f -t 0 -c "Bye"

(No lo recomiendo probar en tu pc, Ya que apaga el pc en 0 segundos sin preguntar nada. )

Para programar un apagado lo veremos al final en los Datos Extras, ya que con la función AT puedes programar el apagado.

Leer archivos externos:

Para leer un archivo externo con Batch, como un archivo de texto por ejemplo. Se usa el siguiente código:

type "NombreDelArchivo.txt"

¿Simple no?

Insertar al Registro:

Insertar al registro tu Batch puede ser muy útil, la verdad yo no entiendo mucho del registro pero leí un poco y aquí tienen un ejemplo que se encuentra a ser sincero en muchas web. Donde aremos que nuestro batch se ejecute con el Sistema.

REG ADD HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run /v MIBATCH.bat /t REG_SZ /d

C:\MIBATCH.bat

Con la función REG ADD Agregamos algo al registro. Con otros comando podemos borrar.

Lo que sigue es la “Dirección” de donde insertaremos el registro que en este caso sera para que nuestro batch se ejecute al iniciar Sesión.

En medio de toda la dirección se puede leer MIBATCH.bat yo puse el nombre del Batch pero también se puede poner cualquier otra cosa. Más adelante donde dice C:\MIBATCH.bat, es la dirección completa de donde esta nuestro Batch.

Con solo esta linea estamos listos. Haz la prueba!

Otras cosas útiles:

Para terminar hablare de pequeñas funciones que pueden ser de utilidad.

Page 16: Programación en Batch 1º Parte

Msg

Esta función tiene otras utilidades, pero les enseñare esta que no funciona en todos los PC.

Sirve para abrir una alerta con un mensaje su utilización es la siguiente:

msg * EsteEsMiMensaje

AT

Esta es una de las que más me gusta, es para programar alguna acción a cierta hora.

Ejemplo:

At 20:00 msg * Son Las 8 de la noche

Con esto a las 20:00 nos aparecerá un mensaje que nos dirá que son las 8 de la Noche.

También puedes programar un apagado o cualquier Cosa.

Si la hora que das ya paso, se tomara como para el día siguiente.

Creo que he terminado, me costó un poco. Ojala no me haya faltado nada. Disfrútenlo y seria bueno que los Clabers aporten con más información. Yo creo que seria útil para todos, incluyéndome.

Suerte.

Programación en Batch 3º Parte.

Antes de leer esto deberías ya saber algo de Batch, tal vez te sirva leer la primera y segunda parte.Si sigo así tendré que escribir un libro. xD

En esta tercera parte, sera básicamente de técnicas y tips. Nuestro indice sera:

Abrir archivos con Borrar de agrandes cantidades Mover o Copiar de a grandes cantidades Crear listas de reproducción (Para Winamp)

Abrir Archivos Con:

Page 17: Programación en Batch 1º Parte

Como algunos saben al hacer clic en un archivo la mayoría de las veces nos muestra la opción Abrir Con.

Este tip es especial para archivos que necesitamos abrir y no podemos ingresar a la carpeta, para archivos que no tienen la opciones de Abrir Con, y también para los que tienen computadoras lentas que al apretar esta opción demoran mucho en mostrarla.

Como hablamos en los tutoriales anteriores con la función start iniciamos procesos, por lo que por eso haremos lo siguiente.

start archivo programa.exe

o también.

start programa.exe archivo

Ambas dos funcionan igual. Lo que hacemos es elegir un programa, y un archivo de manera que el programa abrirá al archivo dado. Como un ejemplo simple, abramos la carpeta C:/WINDOWS con el explorer.

start C:/WINDOWS explorer.exe

Para algunos archivos (Los que tiene direcciones y nombres con espacios) deberemos encerrarlos en comillas.

start "C:\Carpeta con Espacios\Archivo con Espacios.txt" notepad.exe

Como en este ejemplo donde abrimos un texto con Notepad (Bloc de Notas).

De esta manera podemos abrir cualquier archivo o carpeta solo sabiendo su dirección.

Aqui una pequeña lista de programas, para que sepan sus “nombres”.

explorer.exe -> Explorer (El para ver las carpetas) iexplorer.exe -> Internet Explorer firefox.exe -> Firefox (Abrir webs con: start firefox.exe www.jestudio.cl) wmplayer.exe -> Reproductor de Musica Windows Media Player winamap.exe -> Reproductor de Musica Winamp player. mspaint.exe -> Paint cmd.exe -> Shell de comandos notepad.exe -> Bloc de notas photoshop.exe -> Photoshop

Entre muchos otros, para saber como se “llama” un programa podemos ver en la pestaña procesos de el administrador de tareas mientras el programa este abierto(CTRL+ALT+SUPR, o CRTL+ALT+DEL).Además muchas veces podemos simplemente adivinar su nombre.

Page 18: Programación en Batch 1º Parte

Borrar de Agrandes Cantidades:

A mi me a pasado muchas veces que me han quedado carpetas infectadas de archivos inútiles y he comenzado a borrarlos uno por uno. Cuando iba en la mitad me aburrí y decidí ser eficiente, asi que se me ocurrió un código para borrar.

Los archivos que yo quería borrar tenían todos la misma desconocida extensión que ya no me acuerda como era, pero supongamos que era .sfk, ¿Como aniquilarlos todos sin mover un dedo?Pues con esta función, podemos borrar todos los archivos que tengan cierta cosa en común, pero recuerden tener extremo cuidado pues pueden llegar a borrar algo no deseado.

FOR /R %%x in (*.sfk) DO (DEL "%%x")

Como vemos tiene el formato:

FOR /R %%Variable in (ElValorEnComun) DO (AccionAEjecutar)

Donde /R significa que no solo afectara a una carpeta si no que a todas las superiores.

Si agregáramos ese código en algún Batch, al correrlo comenzara a borrar todos los archivos con la extensión sfk que hayan en directorios superiores al suyo o en el mismo. (Directorios = Carpetas)

Claramente yo quise tener cuidado, y no borrar cosas indeseadas. Por lo que antes hice esto:

FOR /R %%x in (*.sfk) DO (echo "%%x")

Es lo mismo, solo que como acción en vez de borrar los listé. Una vez verificado que no había ningún archivo que me importara ejecute el otro.

Para el “valor en comun” hay varias maneras de darlo. Son de la siguiente manera.

común.mp3 -> Todos los archivos con ese nombre exacto. común.* -> Todos los archivos con ese nombre, sin importar la extensión. común* -> Todos los archivos que comiencen en común. *común.mp3 -> Todos los archivos terminados en común.mp3. *.mp3 -> Todo los archivos con la extensión mp3. *común* -> Todos los archivos que contengan la palabra común. * -> Todos los archivos, sin importar su nombre o extensión.

Por ejemplo si ejecuto:

FOR /R %%x in (*a*) DO (DEL "%%x")

Se borraran todos los archivos que tengan una a en su nombre o extensión.

Page 19: Programación en Batch 1º Parte

FOR /R %%x in (*) DO (DEL "%%x")

Se borraran todos los archivos existentes.

Yo mi “programa” lo deje así:

@echo offecho Se han encontrado los siguiente sfk:FOR /R %%x in (*.sfk) DO (echo "%%x")echo -----------------------------------------echo Presione una tecla si desea eliminarlosecho De lo contrario cierre la ventana.pause>nulecho Estas seguro?pause>nulecho Pues comencemospause>nulFOR /R %%x in (*.sfk) DO (DEL "%%x")echo LISTOpause>nulecho adióspause>nulexit

Mover o Copiar de a grandes cantidades

Como se puede ver, en el punto anterior se borran muchos archivos en común con solo una linea de codigo. Pues para copiar y mover se hace casi lo mismo.

FOR /R %%x in (*) DO (MOVE "%%x" C:\DestinoDeLosArchivos\)

En la carpeta que lo ejecutemos moverá todos los archivos a “C:\DestinoDeLosArchivos\”

FOR /R %%x in (*.txt) DO (COPY "%%x" C:\DestinoDeLosArchivos\)

En la carpeta que lo ejecutemos moverá todos los archivos con extensión .txt a “C:DestinoDeLosArchivos”.

Crear una lista de reproducción.

Como fue visto en los tutoriales anteriores, podemos crear fácilmente archivos desde batch. Pero comúnmente solo se nos ocurriría escribir otro batch o un texto.Bueno, me di cuenta que la forma de escribir de las listas de reproducción de Winamp son extremadamente simple. Simplemente los nombres de las canciones. (Solo sirve para winamp)

Por ejemplo, si quisiéramos crear un bat que al apretarlo crea una lista de reproducción con todos los archivos de música existentes en la carpeta haríamos lo siguiente.

Page 20: Programación en Batch 1º Parte

@echo offecho. > lista.m3uFOR %%x in (*.mp3) DO (echo %%~nx.mp3 >> lista.m3u)start lista.m3u winamp.exeexit

Al ejecutarlo nos crearía un lista de reproducción de nuestra carpeta y comenzaría a reproducirla.La lista quedaría creada, si es que quieres que la lista no quede en tu pc.agrega estas lineas antes de exit:

pauseDEL lista.m3u

Basicamente lo que hago con este codigo es crear un archivo con extensión .m3u que dentro contiene los nombres de las canciones.%%~nx significa que nos devolverá solo el nombre de el archivo sin la dirección.

Eso es básicamente todo lo que doy a conocer hoy.Si alguien descubre la manera de hacer el creador de Lista de Reproducción pero que sirva incluso si es que se abre en un directorio raíz le pediría que me lo haga saber, pues no lo logré. (Solo funciona para una carpeta, no funciona como todos los otros batch que hice.)

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.

Page 21: Programación en Batch 1º Parte

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 offFOR /R %%X in (*) DO (echo Nombre: %%~nXecho Extension: %%~xXecho Tamaño: %%~zXecho.)

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>

Page 22: Programación en Batch 1º Parte

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 offecho. > Lista.wplecho ^<smil^>^<body^>^<seq^> >> Lista.wplFOR %%X in (*.mp3) DO (echo ^<media src="%%~nX%%~xX" /^> >> Lista.wpl)echo ^</seq^>^</body^>^</smil^> >> Lista.wplstart Lista.wplexit

Explicación:

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

@echo offEliminamos el Eco

echo. > Lista.wplCreamos un nuevo archivo Lista.wpl o borramos su contenido si existe

echo ^<smil^>^<body^>^<seq^> >> Lista.wplEscribimos <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.wplEscribir <media src=”NombreArchivo+Extencion”/> en la siguiente linea de Lista.wpl, esta accion se repite por cada mp3 encontrado.

echo ^</seq^>^</body^>^</smil^> >> Lista.wplEscribir </seq></body></smil> alfinal del archivo.

start Lista.wplAbrir la lista con el programa predeterminado

exitCerrar 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)