Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: zikotik en 4 Julio 2013, 22:55 pm



Título: Como hacer una consola batch
Publicado por: zikotik en 4 Julio 2013, 22:55 pm
Estaba aburrido, así que me puse a armar una consola en batch para llamar comandos ubicados en una carpeta bin que se encuentra en el mismo lugar que la consola (es decir, que no funciona con los comandos comunes del cmd, sino que tienen que hacer los suyos y meterlos en la carpeta bin)

La consola verifica que la cantidad de caracteres introducidos sea igual o mayor a 6, y si es así entonces verifica también que los primeros 3 caracteres equivalgan a algún comando que haya en la carpeta bin, luego verifica que los siguientes 2 caracteres, equivalgan al operador :: (cuatro puntos), y luego verifica si se insertó una instrucción o no. En caso que la cantidad de caracteres introducidos sea menor a 6, devuelve un error.

El código de la consola es el siguiente:
Código
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. title Konsola
  4. color 8F
  5. cd bin
  6.  
  7. :main
  8. set len=0
  9. set "kon=....."
  10. set /p kon=
  11.  
  12. :read
  13. if not "!kon:~%len%,1!"=="" (
  14.  set /a len+=1
  15.  goto read
  16. )
  17.  
  18. :chk
  19. if %len% LSS 6 (goto error)
  20. set kom=%kon:~0,3%
  21. set chk=%kon:~3,2%
  22. set ins=%kon:~5%
  23. if %chk%==:: (goto kom) else (goto error)
  24.  
  25. :kom
  26. if exist %kom%* (call %kom% %ins%) else (goto error)
  27. goto main
  28.  
  29. :error
  30. echo [x] invalid kom.
  31. goto main

Digamos que quieren llamar a un comando sería:

Código
  1. [comando]::[instrucción]

Por ejemplo: supongamos que tienen un comando en la carpeta bin llamado kpr y lo que hace es matar un proceso, entonces tendrían que hacer:

Código
  1. kpr::chrome.exe

Otro ejemplo sería: si tienen un comando frw en la carpeta bin y lo que hace es activar o desactivar el firewall tanto con la instrucción firewall como con la instrucción set, entonces tendrían que hacer:

Código
  1. frw::firewall.off
  2. frw::firewall.on
  3. frw::set.off
  4. frw::set.on

Espero que les guste, si tienen alguna duda, pregunten.
Y si tienen algún consejo, aconsejen.


Título: Re: Como hacer una consola batch
Publicado por: Meine programmen en 7 Julio 2013, 12:27 pm
No me gustaria parecer ignorante, pero no le acabo de ver la utilidad  :huh:


Título: Re: Como hacer una consola batch
Publicado por: zikotik en 8 Julio 2013, 17:04 pm
No me gustaria parecer ignorante, pero no le acabo de ver la utilidad  :huh:

De hecho es sólo últil para los que quieran hacer sus propios comandos para hacer cosas que a los usuarios les interesaría, no es para cosas comunes como cmd.

Si querés hacer una consola más customizada, pero para ejecutar comandos DOS, te conviene ésto:

Código:
@echo off
title Konsola
color 0F

:main
set /p kon=#:
%kon%
goto main


Título: Re: Como hacer una consola batch
Publicado por: Meine programmen en 8 Julio 2013, 17:36 pm
De hecho es sólo últil para los que quieran hacer sus propios comandos para hacer cosas que a los usuarios les interesaría, no es para cosas comunes como cmd.
Bueno, no se si se pueden llamar comandos, pero yo en mi PC tengo algunos scripts en batch que puedo llamar desde la cmd. Tengo uno que descompone en factores primos el numero que le des, por ejemplo, y tambien tengo otros que automatizan tareas. ¿Qué ventaja supondria que me hiciera una consola? Supongo que la mayor diferencia consistira en el aspecto de la consola, ¿no?


Título: Re: Como hacer una consola batch
Publicado por: OmarHack en 8 Julio 2013, 17:43 pm
Bueno, no se si se pueden llamar comandos, pero yo en mi PC tengo algunos scripts en batch que puedo llamar desde la cmd. Tengo uno que descompone en factores primos el numero que le des, por ejemplo, y tambien tengo otros que automatizan tareas. ¿Qué ventaja supondria que me hiciera una consola? Supongo que la mayor diferencia consistira en el aspecto de la consola, ¿no?
La mayor ventaja es que podrías llamar a todos los scripts desde un solo lugar.
Por ejemplo, si todos los días ejecutas un batch que borre los archivos temporales, otro que arregle el registro, otro para descomponer factores primos, otro que sea una calculadora, etc etc, podrías llamarlos a todos en segundos y tenerlos todos desde el mismo sitio.

Sería como tener una cmd personal, la utilidad se la pones tú.
Un saludo.