Normas del foro

Curso Hacker
Bienvenido(a), Visitante. Favor de ingresar o registrarse.
¿Perdiste tu email de activación? - Enero 08, 2009, 03:57:36
Inicio Ayuda Ingresar Registrarse
Visita: Articulos - Juegos Gratis - Da Foros

Comunidad Underground Hispana  |  Programacion  |  Programación  |  Batch (Moderadores: Espectro Infernal, |Shadow|)  |  Tema: Mini Aplicaciones (XP) 0 Usuarios y 1 Visitante están viendo este tema. « anterior próximo »
Páginas: [1] Ir Abajo Imprimir
Autor Tema: Mini Aplicaciones (XP)  (Leído 639 veces)
Micki Qwerty
Visitante
« en: Julio 13, 2007, 05:47:18 »

Ultimamente me surge la necesidad de crear pequeños programitas para hacer tareas rapidas que me automaticen una serie de tareas que me suelen parecer pesadas de hacer a mano.
El batch es un lenguaje que facilmente te permite hacer este tipo de cosillas en pocos minutos y sin complicarse la vida con otros lenguajes mas complejos.

Ya postee un dia el CHange WallPaper (CHWP) y ahora os dejo 4 cosas muy especificas que quiza nadie tenga necesidad de usar pero que pueden ser interesantes para alguno.

Todos los programas son codigo abierto, todo el mundo puede copiar, modificar o fumar el codigo fuente. Puede incluso modificarlo y publicarlo como suyo donde le de la gana si hacer constancia de su autor original (yo).

AHi van 3 miniprogramas:
------------------------------------------------------------------------------------------------

1) Personal Shell Launcher.
Descripcion: Odio que cada vez que abra la shell de windows XP me salga en la esquina superior derecha el siguiente mensaje:

Microsoft Windows XP [Versión 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.

Bien, se me ocurrio la idea de que como ultimamnete casi trabajo mas por shell que por el entorno grafico, hacerme un lanzador de shell personalizado. Asi dejo un acceso directo en el escritorio al batch lanzador (con el icono del cmd) y con una configuracion abreviada de teclas personalizada (Shift+Ctrl+Alt+F2) la invoco cuando me venga en gana.

Ademas, puedo hacer que se quite ese odioso mensaje y poga uno mas apropiado a mis necesidades y gustos, en mi caso me da la hora, el dia y me invita a que aproveche el tiempo (cuando vayais a la uni lo entendereis ) ^^

Necesitamos 2 scripts en batch. Si alguien logra hacerlo con uno que me avise, pq aunque no me he esforzado demasiado en lograrlo, lo cierto es que no lo he conseguido.

Primer bat, el que se invoca:
shlaunch.bat
Código:
   @echo off

:: Lanza la shell.
start /B C:\Migue\Archivos\bin\customMsg.bat

Evidentemente esta adaptado a mi ordenador, puedes modificarlo ocmo te de la gana.

Segundo bat, que debe de estar en un directorio incluido en el PATH:
customMsg.bat
Código:
   @echo off

:: Mensaje de bienvenida.
echo Migue's Sony Vaio terminal
echo Hoy es un alegre %date%
echo Son las felices %time:~0,5%
echo Aprovecha el tiempo!

exit /B

----------------------------------------------------------------------------------------------

2) Launch MAME

El MAME (Multi ARcade Machine Emulator) es el emulador por excelencia de juegos de recreativas antiguos y no tan antiguos. Es una maravilla de programa gratuito que antiguament tenia un interfaz grafico pero ahora (yo lo prefiero asi) funciona por consola en un modo menos intuitivo.

Yo que soy un viciado y cuando tenia 15 aÑos  me dejaba mogollon de monedas de 25 pesetas en partidas en el bar con los colegas, en un acto de nsotalgia me baje la ultima version y, como ya no va eso de hacer click y lanzar la rom, pues me hice un script para automatizar el proceso. Asi cada vez que quieor jugar, abro la shell y como el .bat esta en un directorio incluido en el PATH, no tengo mas que teclear el nombre de mi programa sin argumentos para que me despliegue las roms instaladas. Hace exactamente lo mismo si le paso un argumento incorrecto. Finalmente, si le paso un argumento correspondiente a la lista de roms, lanza el mame con la rom seleccioanda, y finalmente tras la ejecucion del MAME vuelve al directorio al que se encontraba antes de ejecutar, sin que el usuario note ningun cambio.
aqui os dejo el programa, podeis modificarlo y adaptarlo a vuestros directorios y roms particulares. De paso os dejo la lista de las que son para mi las mejores roms del mame:

lmame.bat
Código:
   @echo off

:: Comprobacion del argumento.
if .%1.==.. (goto listaRoms) else (goto launchRom)

::Lista las roms instaladas.
:listaRoms
echo Uso lmame [1..7]
echo.
echo Listado de Roms:
echo 1  -^> Metal Slug
echo 2  -^> Metal Slug 2
echo 3  -^> Pang 3
echo 4  -^> Snow Bros
echo 5  -^> Snow Bros 2
echo 6  -^> Street Fighter Alpha 3
echo 7  -^> Parodius
echo 8  -^> 1943
echo 9  -^> Three Wonders
echo 10 -^> Dynablast
echo 11 -^> Sonic
echo 12 -^> Final Fight

exit /b 0

::Lanza la rom seleccionada.
:launchRom
if .%1.==.1.  goto uno
if .%1.==.2.  goto dos
if .%1.==.3.  goto tres
if .%1.==.4.  goto cuatro
if .%1.==.5.  goto cinco
if .%1.==.6.  goto seis
if .%1.==.7.  goto siete
if .%1.==.8.  goto ocho
if .%1.==.9.  goto nueve
if .%1.==.10. goto diez
if .%1.==.11. goto once
if .%1.==.12. goto doce
echo Error: Rom inexistente
echo.
goto listaRoms

:uno
set rom=mslug
goto Fin

:dos
set rom=mslug2
goto Fin

:tres
set rom=pang3
goto Fin

:cuatro
set rom=snowbros
goto Fin

:cinco
set rom=snowbro2
goto Fin

:seis
set rom=sfa3
goto Fin

:siete
set rom=parodius
goto Fin

:ocho
set rom=1943
goto Fin

:nueve
set rom=3wonders
goto Fin

:diez
set rom=dynablst
goto Fin

:once
set rom=mp_sonic
goto Fin

:doce
set rom=ffight
goto Fin

:Fin
pushd C:\Migue\Entretenimiento\MAME
mame -joystick %rom%
popd
exit /b 0

----------------------------------------------------------------------------------------------------

3) Set Java Project
Resulta que los que trabajamos con el entorno de programacion para java eclipse, podemos ejecutar desde ahi mismo los programas que creamos ya que el magnifico entorno tiene un una consola propia integrada.
Una de las cosas que me molesta de dicha consola es que ordena la salida segun le viene en gana de manera que la salida de error la muestra antes o despues que la salida completa. Estoy haciendo un proyecto en el que el orden de dicha salida es necesario que se respete ya que el proyecto es un analizador sintactico y para probar su correcto funcionamiento tengo que forzar errores para ver si ante errores sintacticos mi programa respodne bien. Para ello me vi obligado a ejecutar para las pruebas mi programa en la consola y como la jerarquia de directorios del elipse no incluye el fichero compilado .class en el CLASSPATH, cada vez que queira ejecutar ese o cualquier otro programa desde la consola tenia que incluir en el CLASSPATH el directorio donde se encontraba el binario.

Me hice pues un pequeño programita en batch que lo unico que hace es agregar al CLASSPATH el workspace que yo quiera, mostrando un error si el proyecto no existe y el uso del programa si este se invoca sin argumentos. Una vez se agrega el proyeco al CLASSPATH, informa de que la operacion termino ocn exito y tan solo resta escribir en la consola: java y el nombre de la clase (sin .class) que tiene el procedimiento main (y sus argumentos si los necesita) para que este sea ejecutado.

setJava.bat
Código:
   @echo off

if .%1.==.. (goto Uso) else (goto Set)

:Set
if not exist C:\Migue\Uni\Programacion\Java\%1 goto Error
set CLASSPATH=C:\Migue\Uni\Programacion\Java\%1\bin
echo Proyecto %1 agregado al ClassPath.
goto :Fin

:Error
echo Error: El proyecto %1 no existe.
exit /b 1

:Uso
echo setJava  ^<Nombre de proyecto^>

:Fin
exit /b 0

----------------------------------------------------------------------------------------------------

Si alguien tiene una duda sobre algun mandato utilizado, solo tiene que preguntar. Con este post pretendo demostrar la utilidad REAL del batch scripting, capaz de hacer no solo virus sino programas que nos faciliten la vida, automaticen tareas etc...
Los batch puede que quiza sean mejorables pero mantienen mucha coherencia metodologica, son programas rapidos y limpios que no usan cosas innecesarias y simplemnte funcionan bien y hacen lo que tienen que hacer sin provocar errores o sobrecargar la consola.
Si una sola persona aprende algo con esto me sentire simplemnete satisfecho.
a sabes que podeis modificar y adaptar todos ellos a vuetsras neesidades. Ya vere si mas adelante publico cosas mas elaboradas.
Un saludo a to2
« Última modificación: Julio 13, 2007, 05:55:53 por Scofield » En línea
Rexix
Colaborador
*****
Desconectado Desconectado

Mensajes: 517


xox mi raxa, xox mi herenxia...


Ver Perfil Email
« Respuesta #1 en: Julio 13, 2007, 12:13:37 »


haber...

los bat son simples pero BUENOS, y como vos decis no solo sirve para crear malware o bromas, sino para facilitarnos tareas y vos con el batch lo entiendes y aprovechas muy bien.

solo tengo una duda con tus code y es el mandato pushd para que sirve?
ya que la ayuda de la consola no la entiendo bien...

salu2 Grin

En línea




my page:

Necesitas ser usuario para ver los enlaces Crear Usuario  Hacer Sesion

problemas para Recordar tus contraseñas? aqui tienes la solucion

Necesitas ser usuario para ver los enlaces Crear Usuario  Hacer Sesion
Micki Qwerty
Visitante
« Respuesta #2 en: Julio 13, 2007, 07:43:15 »

El pushd es un mandato que como su nombre indica, mete en una pila (push) un directorio (d).
De esta forma si estamos, en cualquier directorio de nuestro ordenador y queremos ejecutar, por ejemplo, el lmame que he puesto ahi arriba, tendremos que tener en cuenta dos cosas:

1) Que el MAME va a buscar las roms a partir del directorio de trabajo, es decir, que si invocamos a MAME <rom> por mucho que mame este en el path o incluso en system32, las roms no van a ser encontradas.
Por eso podemos hacer dos cosas:
1.1) ir al directorio del mame con un chdir y desde ahi ejecutarlo.
1.2) usar el pushd.

2) Queremos que la ejecucion del bat sea TRANSPARENTE para el usuario, es decir, que una vez finalice el script, no nos deje ubicados en el drectorio de MAME sino en el que estabamos trabajando..

De esta manera, podemos incluir en system32 el lmame o bien en el path de forma permanente y con eso garantizamos que el lmame se puede ejecutar desde la consola tan solo escribiendo lmame o bien lmame.bat y que funcioanara correctamente:
1) Independientemente de si el MAME esta incluido en el PATH o no.
2) Independientemente del directorio donde se encuentre el MAME.
3) Independientemente del directorio donde nos encontremos trabajando.
(Y esos son parte de los requisitos principales del funcionamiento d enuestro bat, en cualquier sitio, como quiera, simple, rapido y que no falle)


El pushd <directorio> realiza las siguientes acciones:
1) mete en una pila el directorio de trabajo actual.
2) cambia al drectorio especificado ocmo argumento al programa.

El popd realiza la operacion inversa y se invoca sin argumentos:
1) Saca de la pila el directorio de trabajo anterior
2) cambia el directorio de trabajo actual por el sacado de la pila.

si quieres prueba lo siguiente:

chdir %homepath%
pushd %systemroot%
pushd c:\
popd
popd

Es decir, creo que ya esta muy claro, simplemente se guarda un drectorio de trabajo en memoria para luego restaurarlo y asi el usuario no se entera de que directorio se ha usado en las operaciones intermedias.
Si no se usase, el programa funcionaria pero al termianr su ejecucion, siempre cambairia el directorio de trabajo al del mame.

Un saludo y gracias por leer el code Smiley
« Última modificación: Julio 13, 2007, 07:52:43 por Scofield » En línea
Rexix
Colaborador
*****
Desconectado Desconectado

Mensajes: 517


xox mi raxa, xox mi herenxia...


Ver Perfil Email
« Respuesta #3 en: Julio 20, 2007, 10:12:46 »


estos dias he estado de relax asi que no habia leido la explicacion..

la verdad es que el metodo de explicacion mas efectivo para mi es el de los ejemplos, iba un poco confundido hasta que la practica me aclaro todo completamente...

crei que este dia iba terminar sin completar la frase "todos los dias se aprende algo nuevo"

gracias y un saludo Grin
En línea




my page:

Necesitas ser usuario para ver los enlaces Crear Usuario  Hacer Sesion

problemas para Recordar tus contraseñas? aqui tienes la solucion

Necesitas ser usuario para ver los enlaces Crear Usuario  Hacer Sesion
Páginas: [1] Ir Arriba Imprimir 
Comunidad Underground Hispana  |  Programacion  |  Programación  |  Batch (Moderadores: Espectro Infernal, |Shadow|)  |  Tema: Mini Aplicaciones (XP) « anterior próximo »
Ir a:  


Ranking-Hits
Powered by SMF 1.1.7 | SMF © 2006-2007, Simple Machines LLC