PDF de programación - Programación BATCH Avanzada

Imágen de pdf Programación BATCH Avanzada

Programación BATCH Avanzadagráfica de visualizaciones

Publicado el 9 de Julio del 2020
267 visualizaciones desde el 9 de Julio del 2020
185,0 KB
12 paginas
Creado hace 7a (04/01/2013)
Programación BATCH Avanzada.

Temario.
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 de texto, 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 unidad de %1.
%~p1 - regresa solo la ruta del archivo %1.
%ñ1 - 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 donde tenemos:

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 <DIR> .
24/07/2006 12:25a <DIR> ..
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: %ñ1
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 and Settings\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 codigo:
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
echo Sin 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 parametro de 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:
Código:
C:\Documents and Settings\Administrador\tempcurso>astring
┐Como te llamas?
Juan
Tu te llamas Juan

Ahora, si por ejemplo, queremos, hacer algo como, obtener las ultimas 3 letras del nombre:
Código:
@echo off
echo Escribe tu Nombre
set /P NOM=
echo %NOM:~-3%

Aqui lo que estamos haciendo en la ultima linea:

%NOM:~-3%
hara, obtener los ultimos 3 caracteres, como si se tratara de la funcion substring.

por ejemplo, esto:

%NOM:~1,3%

obtendra del segundo al cuarto caracter. (empiezas desde 0, recuerda)

Para reemplazar cadenas, dentro de otra variable, es la siguiente sintaxis:
Código:
@echo off
echo Escribe una frase
set /P FRA=
echo %FRA:e=XXX%

esto reemplazara las letras "e" por "XXX".


Para hacer calculos matematicos, se usa el modificado /A, de esta forma:
Código:
@echo off
set /A x=1
echo %x%
set /A x=x*9
echo %x%

tenemos las siguientes operaciones disponibles:
Código:
() - agrupar
* / % - operadores aritméticos
+ - - operadores aritméticos
<< >> - mayús lógica
& - AND
^ - XOR
| - OR
= *= /= %= += -= - asignación
&= ^= |= <<= >>=
, - separador de expresión

Con este podemos usar numeros hexadecimales de la siguiente forma:
Código:
@echo off
set /A x=2
echo %x%
set /A x=x*0xff
echo %x%

al colocar 0x estamos especificando, que a continuacion se pondra un valor hexadecimal.



Imprimir caracteres sin usar comandos

Ahora, se preguntaran, en las variabes, siempre usamos los signos %
Como imprimes uno?

veamos:
Código:
@echo off
set x=pru
set pru=HOLA

:: Esto imprimira el contenido de x
echo %x%

::Esto imprimira la letra x
echo x

::Esto imprimira %x%
echo %%x%%

::Esto imprimira el valor de x entre %%
echo %%%x%%%

:: Lo mismo
echo %pru%
echo %%pru%%
echo %%%pru%%%

En resumen, si quieren imprimir, el caracter %, deben colocarlo 2 veces.

Para otros caracteres, que ejecutan alguna accion en batch como:
&

|
<
>

debes colocar este caracter antes:^

por ejemplo:
Código:
echo <html><h1>Hola</h1></html> >index.html

no funcionara, pero:
Código:
echo ^<html^>^<h1^>Hola^</h1^>^</html^> >index.html

dara:
Código:
C:\Documents and Settings\Administrador\tempcurso>type index.html
<html><h1>Hola</h1></html>



Algunas otras variables de entorno

Tenemos otras variables de entorno que podrian servir, ademas de las comunes de ALLUSERSPROFILE y
HOMEPATH, por ejemplo:
Código:
@echo off
echo Directorio Actual: %CD%
echo Fecha: %DATE%
echo Hora: %TIME%
echo Numero Aleatorio: %RANDOM%
dara como resultado:
Código:
C:\Documents and Settings\Administrador\tempcurso>astring
Directorio Actual: C:\Documents and Settings\Administrador\tempcurso
Fecha: Lun 24/07/2006
Hora: 2:13:49.33
Numero Aleatorio: 24523

C:\Documents and Settings\Administrador\tempcurso>astring
Directorio Actual: C:\Documents and Settings\Administrador\tempcurso
Fecha: Lun 24/07/2006
Hora: 2:13:51.60
Numero Aleatorio: 3681

Otras instrucciones muy utiles, serian POPD y PUSHD, que sirven para guardar y regresar al directorio
actual, por ejemplo:
Código:
@echo off
echo %CD%
PUSHD \
echo %CD%
POPD
echo %CD%

PUSHD funciona de la siguiente manera:

Guarda el directorio actual., y va a la ruta especificada.

POPD regresa al directorio guardado por PUSHD

podemos usarlos uno dentro de otro, asi:
Código:

@echo off
echo %CD%
PUSHD \
echo %CD%
PUSHD %homepath%
echo %CD%
POPD
echo %CD%
POPD
echo %CD%



IF

If, reconoce varias situaciones:

valores de error
comparar cadenas
existencia de archivos
comparaciones matematicas

como ya sabemos %ERRORLEVEL% almacena algunos valores de otras funciones.

al hacer

IF ERRORLEVEL 1 @echo ok ELSE @echo no

estariamos preguntando si ERRORLEVEL es 1, si lo es imprime OK, si no, imprime NO.

tambien podemos comparar cadenas, por ejemplo:
Código:
@echo off
IF "%~1"=="hola" echo hola

usamos %~1 para que aunque el usuario ponga comillas, no salga error
Código:
@echo off
IF /I "%~1"=="hola" echo hola

este codigo, solo responde si dices hola CON minusculas. /I es para hacer mas estricta la comparacion.

ahora, podemos usar IF en varias lineas:
Código:
@echo off
IF EXIST %~snx1 (
echo EXISTE!
) ELSE (
echo NO EXISTE
)

con parentesis ().

si vamos a usar comparaciones numericas, debemos usar los siguientes codigos de comparación:
Código:

EQU - igual
NEQ - no igual
LSS - menor que
LEQ - menor que o igual
GTR - mayor que
GEQ - mayor que o igual

por ejemplo:

Código:
@echo off
echo Cual es tu edad?
SET /P m=
IF %m% GEQ 18 (
echo ERES MAYOR DE EDAD
) ELSE (
echo NO ERES MAYOR DE EDAD
)

que regresa:
Código:
C:\Documents and Settings\Administrador\tempcurso>acon
Cual es tu edad?
19
ERES MAYOR DE EDAD

C:\Documents and Settings\Administrador\tempcurso>acon
Cual es tu edad?
17
NO ERES MAYOR DE EDAD

Tambien podemos saber si una variable ya fue definida:
Código:
IF DEFINED var (
echo SI
) ELSE (
echo NO
)



FOR

FOR es una herramienta muy completa, nos permite analizar segmentos de la salida de comandos,
funciones y el contenido de archivos.

Tambien permite hacer bucles de la siguiente manera:
Código:
FOR /L %%var IN (inicio,incremento,fin) DO (acciones)

inicio, es el valor inicial, incremento es la cantidad a sumar, y fin es la cantidad a detenerse, por ejemplo:
Código:
FOR /L %%i IN (0,1,10) DO (echo %%i)
imprimira 0 1 2 3 4 5 6 7 8 9 10

sinembargo, la forma mas sencilla de usar FOR, es para numerar archivos, y hacer algo con ellos.. por
ejemplo:
  • Links de descarga
http://lwp-l.com/pdf17886

Comentarios de: Programación BATCH Avanzada (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad