martes, 18 de julio de 2017

Programación Windows Batch (CMD) parte 4

Siguiendo con la serie de post sobre programación ( 1, 2, y 3) batch ahora veremos algunas cosas como operaciones aritméticas, operadores lógicos  y uso de ficheros.

Cuando somos administradores de servidores o desarrolladores muchas veces tenemos que realizar tareas que nos quitan, relativamente, tiempo valioso que podríamos ocupar para otras cosas (como ver nuestro Facebook, jeje, broma).  Aprender a escribir scripts que nos faciliten algunas tareas siempre es útil. Por ejemplo, conocer todas las características técnicas de nuestro equipo de cómputo nos servirá cuando se realiza peritajes informáticos y soporte al equipo. Realizar respaldos automáticos a nuestras carpetas , archivos y directorios será más sencillo gracias a un script. Pero antes debemos aprender lo básico de la programación en batch.




Ejemplo 1. Operaciones aritméticas básicas.
aritmetica.bat
@echo off
::Nombre del archivo, imprimirá: aritmetica.bat
echo %0
:: Set nos servirá para asignar valores a una variable
set a=21
set b=32
:: SET /a nos servirá para realizar operaciones
:: los operadores aritméticos son iguales a los de cualquier otro leng. de programación
set /a suma=%a%+%b%
set /a resta=%a%-%b%
set /a producto=%a%*%b%
set /a division=%a%/%b%
:: Mostramos los resultados
echo Suma: %suma%
echo Resta: %resta%
echo Producto: %producto%
echo Division: %division%
pause

No hay mucho que explicar. Solo se trata de  operaciones aritméticas básicas. Y si el usuario quiere introducir valores, ¿se puede? La respuesta es si.

Ejemplo 2. Introducir valores desde terminal (paso de parámteros). 
aritmetica_enter.bat
@echo off
echo Primer: valor %1, Segundo valor: %2
:: Asignamos sus valores a unas variables a y b
SET a=%1
SET b=%2
set /a suma=%a%+%b%
set /a resta=%a%-%b%
set /a producto=%a%*%b%
set /a division=%a%/%b%
:: Mostramos los resultados
echo Suma: %suma%
echo Resta: %resta%
echo Producto: %producto%
echo Division: %division%pause

¿Cómo usar el script? Abrimos una terminal CMD.exe, nos ubicamos en el directorio del archivo y escribimos: aritmetica_enter.bat 34 43

Ejemplo 3. El mismo ejemplo, pero con la opción de que el usuario introduzca los valores desde teclado y no en paso de parámetros como el ejemplo anterior. Usaremos SET /p para introducir valores.
aritmetica_enter_p.bat
@echo off
echo Nombre del archivo %0
echo Primer numero:
SET /p a=
echo Segundo valor:
SET /p b=echo Primer: valor %a%, Segundo valor: %b%
set /a suma=%a%+%b%
set /a resta=%a%-%b%
set /a producto=%a%*%b%
set /a division=%a%/%b%
:: Mostramos los resultados
echo Suma: %suma%
echo Resta: %resta%
echo Producto: %producto%
echo Division: %division%pause

Ejemplo 4. Operadores lógicos.
EQU  equivale a  =
NEQ  equivale a !=
LSS   equivale a <
LEQ  equivale a <=
GTR  equivale a >
GEQ  equivale a >=

Comprobar el número mayor de tres números.
mayor.bat
@echo off
set a=0
set b=90
set c=10
echo [%0]
echo %a%, %b% y %c%

:: Consideramos que %a% es el mayor(aunque no lo sea)
set mayor=%a%

IF %mayor% LSS %b% SET mayor=%b%
IF %mayor% LSS %c% SET mayor=%c%
::El número mayor será el b
echo El mayor es %mayor%

pause

Ejemplo 5. Generando un número aleatorio.
@echo off
echo Introduce numero:
set /p numero=
REM Número aleatorio
set ALEATORIO=%RANDOM%
IF %numero% EQU %ALEATORIO% echo Son iguales


Por un momento dejaré el tema y continuaré escribiendo más sobre batch.

Links:
https://www.elhacker.net/comandos-consola-windows-7.html
http://foro.elhacker.net/buscador-t132924.0.html



Programación Windows Batch (CMD) parte 3

Crear ciclos para efectuar operaciones tediosas nos ahorrará tiempo para realizar otras tareas. En está ocasión veremos ciclos con FOR.

¿Cuál es la síntaxis de bucle FOR en Windows Batch?

Si está dentro de un archivo *.bat :
FOR %%variable IN (seq) DO operaciones

Si lo ejecutamos en una terminal:
FOR %variable IN (seq) DO operaciones

Ejemplo 1. Recorrer una secuencia de números del 0 al 5:
recorrer.bat
@echo off
FOR %%i in ( 0 1 2 3 4 5 ) DO echo Hola no. %%i
pause

Nos imprimirá en pantalla:
Hola no. 0
Hola no. 1
Hola no. 2
Hola no. 3
Hola no. 4
Hola no. 5


¿Puedo usar contadores? Si, se pueden usar.

Ejemplo 2. Uso de contadores:
contador.bat
@echo off
set numeros= 1 2 3 4 5 6 7 8 9 10
set cont=0
for %%a in (%numeros%) do (
  echo Hola no. %%a

  ::  Contador
  set /a cont+=1
  )
echo Total: %cont%


Este código nos imprimirá, además de los mensajes Hola no. 0 ..., el total de valores contados, en este caso 10.

¿Se pueden efectuar otras operaciones más complejas? Si, a continuación veremos dos ejemplos más.

Ejemplo 3.  Conocer el DNS de sitios Web usando el comando NSLOOKUP:
nslookup_dns.bat
@echo off
echo Conocer el DNS de un sitio web:
FOR %%a IN (www.google.com www.facebook.com wwww.twitter.com ) DO (
  echo Sitio [ %%a ] :
  NSLOOKUP %%a
  )


El comando NSLOOKUP nos permite conocer el DNS asignados a una conexión de red. si quiero conocer el DNS de un sitio, por ejemplo www.google.com, debo escribir en la terminal MS-DOS:
nslookup www.google.com   y dar Enter, con esto obtendremos el nombre de dominio y el DNS del sitio.


Ejemplo 4. Mandar un PING a los nodos de una red:
ping_red.bat
@echo off
echo Mandando un ping a los nodos de una red:
FOR /L %%i IN (1,1,254) DO (
  echo Nodo no. %%i :
  PING -a -n 1 187.208.41.%%i
  )


El comando PING nos sirve para probar la conexión de red, enviando y recibiendo paqueetes de datos.

Ahora usando el anterior código, mandaremos el resultado a un archivo de texto llamado resultados.txt.

Ejemplo 5. Mandar un PING a los nodos de una red y guardar el resultado en un archivo de texto (*.txt). Al final mostrar el resultado usando la función MSG (para mandar mensjes en una ventanita).
resultados_ping.bat
@echo off 
:: Si existe el archivo, borrar
IF EXIST resultados.txt DEL resultados.txt
:: Si no existe el archivo, crearlo 
IF NOT EXIST TYPE nul > resultados.txt
echo Mandando un ping a los nodos de una red: > resultados.txt
FOR /L %%i IN (1,1,254) DO (
  echo Nodo no. %%i : >> resultados.txt
  PING -a -n 1 187.208.41.%%i >> resultados.txt
  )

:: Para finalizar, mostrar el contenido del archivo usando MSG
TYPE resultados.txt | msg *

En este script usamos las secuencias top-down, selectivas (IF) y las repetitivas (FOR).

Sitios de interés:

Links:
http://www.robvanderwoude.com/
https://www.instructables.com/howto/cmd/
https://norfipc.com/redes/codigos-crear-aplicaciones-batch-script.html 


lunes, 17 de julio de 2017

Programación Windows Batch (CMD) parte 2

Continuamos con el tema anterior sobre Batch. Ahora veremos las secuencias de control: arriba hacia abajo (top-down), selectivas y repetitivas.

1. Top-down: Escribir las líneas de código de arriba hacia abajo.  No es difícil de entender.
2. Selectivas: Elegir el camino que seguirán nuestras instrucciones mediante condiciones.
3. Repetitivas: Ciclos de instrucciones que se repetirán  gracias a condiciones que se deben cumplir.

Ejemplo 1. Escribir las instrucciones de arriba hacia abajo es lo usual  cuando programamos.
top_down.bat
@echo off
REM Coloco un título
title Hola %username% estamos programando en Windows Batch
REM  Limpio pantalla
CLS
:: Podemos usar minúsculas o mayúsculas indistintamente
echo Hoy es %DATE% y la hora es: %time%
:: Para conocer las variables del sistema puedes escribir SET en la terminal de comandos
echo Tu nombre de dominio es: %USERDOMAIN%
echo Tu carpeta personal es: %USERPROFILE%
echo El nombre de tu maquina es: %COMPUTERNAME%


En este ejemplo escribimos las instrucciones de arriba hacia abajo, eso se conoce como secuencia Top-down.  Ahora veremos las secuencias de control selectivas usando IF, IF-ELSE.

Ejemplo 2. Comprobar si existe un archivo de texto llamado direcciones.txt usando IF . Si existe, borrarlo.
borrar_existe.bat
@echo off
TITLE Borrando archivo
IF EXIST direcciones.txt DEL direcciones.txt
echo Archivo borrado

Ejemplo 3. Ahora usando  IF-ELSE. En caso de que el archivo direcciones.txt no exista mandar un mensaje de error. Si existe, borrarlo.
borrar_existe_si.bat
@echo off
TITLE Borrando archivo
IF EXIST direcciones.txt (
  DEL direcciones.txt
  echo Archivo borrado
  ) ELSE (echo Error, no existe el archivo)

Ejemplo 4. Ahora usaremos el operador lógico NOT dentro de la estructura IF-ELSE para comprobar la existencia de un archivo llamado direcciones_correo.txt.
@echo off
TITLE Creando un archivo si no existe
:: Operador lógico NOT
:: Si no existe entonces ...
IF NOT EXIST direcciones_correo.txt (
  REM Creamos archivo direcciones_correo.txt, ya que no existe
  TYPE nul > direcciones_correo.txt
  echo Archivo creado

  :: Escribir dentro del archivo
  echo Direcciones >> direcciones_correo.txt

  :: >> nos permite reescribir dentro del archivo
  echo gatobalin@latinmail.com >> direcciones_correo.txt
  echo alquimistadecodigo@gmail.com >> direcciones_correo.txt
  echo programadoreesmexico@yahoo.com.mx >> direcciones_correo.txt

  REM Observar el contenido del archivo creado
  TYPE direcciones_correo.txt
  ) ELSE (echo Existe el archivo direcciones_correo.txt)


En la tercera parte continuaremos con las secuencias repetitivas.

Links: https://alquimistadecodigo.blogspot.mx/2017/07/programacion-windows-batch-cmd.html





domingo, 16 de julio de 2017

Programación Windows Batch (CMD)

En esta serie de post aprenderemos cómo crear nuestros propios archivos Windows Batch.

1. ¿Por qué aprender Batch en Windows?
Una de las razones es que, queramos o no, algún día tendremos que trabajar usando sistemas operativos Windows. Crear scripts nos puede servir para realizar tareas que parecen sencillas en un principio, pero que pueden llegar a ser tediosas (ej. crear múltiples carpetas, comprobar la existencia de un archivo, realizar respaldos, etc.).

2. ¿Cómo puedo crear un archivo Batch en Windows?
Los archivos batch en Windows pueden ser escritos con las extensiones *.bat o *.cmd. Pueden contener una serie de comandos y secuencias de instrucciones para realizar diversas tareas.

Ejemplo 1. Conocer  el nombre del usuario.
usuario.bat
@echo off 
echo Hola %USERNAME%
pause 
GOTO Comentario
 -- esto es
   un comentario multi línea
que no se interpretará en MS-DOS
 --
:Comentario

En el anterior ejemplo podemos ver que la variable USERNAME contiene el nombre del usuario que ha iniciado sesión en un sistema Windows. La variable se coloca entre dos signos de % (porcentaje) de la siguiente forma: %variable% . La palabra echo nos imprimirá ese valor en pantalla. La palabra pause es una sentencia que indica "pausa" hasta que presionemos alguna tecla que finalice el script.

Ejemplo 2. Asignar valores a una variable e imprimirlas en pantalla.
valores.bat
@echo off
REM Este es un comentario
::Esto también es un comentario
SET NOMBRE= El alquimista de codigo
::date /t en terminal
SET FECHA=%DATE%
::time /t en terminal
SET HORA=%TIME%
::Imprimir valores en pantalla
echo %NOMBRE%
echo Son las %HORA% y el día es %FECHA%
echo Presiona Enter para salir
pause
exit

Como se puede ver en este script creamos tres variables (nombre, fecha, hora) y les asignamos un valor. Este valor puede ser un comando o cualquier otra entrada (e este caso un texto).

Ejemplo 3. Comprobar la existencia de un archivo. Si existe, mostrar el contenido. En caso contrario, mostrar un mensaje de error.
archivo_existe.bat
@echo off
::entrada por paso de argumentos
SET ARCHIVO=%1
IF EXIST %ARCHIVO% (
    TYPE %ARCHIVO% | msg *
) ELSE (
   msg * "Error, no existe archivo"
   )

Este script comprueba si existe un archivo. Abrir la terminal con Windows + r y escribir:cmd y pulsar la tecla Enter. Ahora tecleamos lo siguiente: archivo_existe.bat MiArchivo.txt   y volvemos a pulsar la tecla Enter:

Programar en Windows Batch puede parecer sencillo y bastante útil cuando se requiere realizar tareas que parecen sencillas en un principio, pero que se vuelven tediosas con el tiempo.

Hasta el próximo post.


Links:
https://es.wikipedia.org/wiki/Archivo_batch 





sábado, 16 de enero de 2016

Cursos de Java por gente que no sabe Java


Link al vídeo
https://twitter.com/jsrdriguez/status/688791152267513857

ESTO PASA CUANDO NO SABES JAVA y TE PONES A DAR CURSOS :D
Posted by Carlos Mollapaza on Sábado, 16 de enero de 2016

Vídeo aquí https://www.facebook.com/carlosmollapaza/videos/725669387532518/

domingo, 18 de octubre de 2015

Groovy: uso de"with"

En los lenguajes dependientes de la JVM encontramos varias peculiaridades que no llaman la atención. Y Groovy no se queda atrás. 

Tenemos esta clase en Java:

class Cliente {
    private String nombre;
    public Cliente(){}

    public void setNombre(String nombre){
         this.nombre=nombre;
   }  

   public String getNombre(){
      return nombre;
   }
}

Y ahora en Groovy:

class Cliente{
    String nombre
}

Lo primero que notamos es que es menor código escrito. Pero también a la hora de instanciar encontramos algo como esto:

En Java:
Cliente cliente= new Cliente();

En Groovy:
def cliente= new Cliente(nombre:"")

Y para "settear":

En Java:
cliente.setNombre("El alquimista de código");

En Groovy nos permite hacer esto de varias formas:
def cliente=new Cliente(nombre:"El alquimista de código")

O de esta otra forma:
cliente.nombre="El alquimista de código"

Además de usar "with" para asignar valores:
def cliente = new Cliente()
cliente.with{
    nombre="El alquimista de código"
}


A Groovy se le considera "El Python de Java" por su sintaxis tan parecida a ese lenguaje.

domingo, 27 de septiembre de 2015

Programación Windows Batch (CMD) parte 4

Siguiendo con la serie de post sobre programación ( 1 , 2 , y 3 ) batch ahora veremos algunas cosas como operaciones aritméticas, operad...