Programacion Batch Avanzada
1.- Variables y Argumentos.
2.- Imprimir caracteres de comandos.
3.- Algunas otras variables de Entorno.
4.- IF
5.- FOR
6.- Funciones
7.- Includes
8.- Misc
9.- EOF
Variables y Argumentos
El manejo de variables en batch, es muy flexible., y este nos permite hacer desde operaciones matemáticas, hasta seleccionar ciertas partes de una variable, asi como reemplazar cadenas detexto, y obtener archivos.. y sus propiedades, la fecha, hora, generar numeros aleatorios, entre otros.
Los argumentos que recibe un batch, son recibidos de la siguiente forma:
batch, argumento1, dos, tres
hara que:
%0 = batch
%1 = argumento1
%2 = dos
%3 = tres
en %0 se guardara, el nombre del archivo.
Podemos borrar el contenido de un parametro con el comando shift:
Código:@echo off
echo %0 %1 %2 %3
shift /1
echo %0 %1 %2 %3
al llamar:
Código:
C:\Documents and Settings\Administrador\tempcurso>astring 123 456 789
astring 123 456 789
astring 456 789
shift borro, el primer argumento.
Tambien contamos con los siguientes modificadores para los archivos:
Código:
%~f1 - regresa la ruta y el archivo de %1.
%~d1 - regresa la letra de la unidadde %1.
%~p1 - regresa solo la ruta del archivo %1.
%~n1 - regresa solo el nombre de archivo %1.
%~x1 - regresa solo la extension del archivo %1.
%~s1 - regresa solo la ruta, con directorios, con nombres cortos del archivo %1.
%~a1 - regresa los atributos del archivo.
%~t1 - regresa la hora/fecha del archivo %1
%~z1 - regresa el tamaño del archivo %1.
por ejemplo:
en un directorio dondetenemos:
Código:
C:\Documents and Settings\Administrador\tempcurso>dir
El volumen de la unidad C no tiene etiqueta.
El número de serie del volumen es: A057-553B
Directorio de C:\Documents and Settings\Administrador\tempcurso
24/07/2006 12:25a .
24/07/2006 12:25a ..
24/07/2006 12:25a 6 archivo.txt
1 archivos 6 bytes
2 dirs 401,715,161,088 bytes libres
este batch:
Código:@echo off
echo Ruta al archivo: %~f1
echo Disco: %~d1
echo Solo ruta: %~p1
echo Nombre: %~n1
echo Extension: %~x1
echo Ruta Corta: %~s1
echo Atributos: %~a1
echo Fecha: %~t1
echo Tamaño: %~z1
llamandolo analiza.bat, saca el siguiente resultado:
Código:
C:\Documents and Settings\Administrador\tempcurso>analiza archivo.txt
Ruta al archivo: C:\Documents andSettings\Administrador\tempcurso\archivo.txt
Disco: C:
Solo ruta: \Documents and Settings\Administrador\tempcurso\
Nombre: archivo
Extension: .txt
Ruta Corta: C:\DOCUME~1\ADMINI~1\TEMPCU~1\archivo.txt
Atributos: --a------
Fecha: 24/07/06 12:25a
Tama±o: 6
Tambien podemos usar varias propiedades, por ejemplo, este código:
Código:
@echo off
echo %~anxt1
saca este resultado:
Código:C:\Documents and Settings\Administrador\tempcurso>analiza archivo.txt
--a------ 24/07/06 12:25a archivo.txt
Si lo que recibimos no es un archivo, sino una cadena de texto, que contiene mas de una palabra, se debe poner entre comillas, algo asi:
astring "parametro de varias letras"
al obtenerlo, en %1, lo recibimos con comillas, pero si usamos:
Código:
@echo off
echo Con Comillas: %1
echoSin Comillas: %~1
saca este resultado:
Código:
C:\Documents and Settings\Administrador\tempcurso>astring "parametro de varias letras"
Con Comillas: "parametro de varias letras"
Sin Comillas: parametro de varias letras
Y por ejemplo, si queremos obtener todos los argumentos, se usa:
%*
es decir:
Código:
@echo off
echo Argumentos: %*
al ejecutar:
astring parametrode varias letras
nos regresa:
Código:
C:\Documents and Settings\Administrador\tempcurso>astring parametro de varias letras
Argumentos: parametro de varias letras
Para asignar a una variable, el valor de algo escrito por el usuario, puedes usar:
set /P variable=
por ejemplo:
Código:
@echo off
echo ¿Como te llamas?
set /P miva=
echo Tu te llamas %miva%
hara algo asi:...
Regístrate para leer el documento completo.