Como hacer una consola batch

Iniciado por zikotik, 4 Julio 2013, 22:55 PM

0 Miembros y 1 Visitante están viendo este tema.

zikotik

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:
@echo off
setlocal enabledelayedexpansion
title Konsola
color 8F
cd bin

:main
set len=0
set "kon=....."
set /p kon=

:read
if not "!kon:~%len%,1!"=="" (
 set /a len+=1
 goto read
)

:chk
if %len% LSS 6 (goto error)
set kom=%kon:~0,3%
set chk=%kon:~3,2%
set ins=%kon:~5%
if %chk%==:: (goto kom) else (goto error)

:kom
if exist %kom%* (call %kom% %ins%) else (goto error)
goto main

:error
echo [x] invalid kom.
goto main


Digamos que quieren llamar a un comando sería:

[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:

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:

frw::firewall.off
frw::firewall.on
frw::set.off
frw::set.on


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

Meine programmen

No me gustaria parecer ignorante, pero no le acabo de ver la utilidad  :huh:
REMEMBER! Reality is an illusion, the universe is a hologram, BUY GOLD! BYE!!


zikotik

Cita de: Meine programmen en  7 Julio 2013, 12:27 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:

@echo off
title Konsola
color 0F

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

Meine programmen

Cita de: zikotik en  8 Julio 2013, 17:04 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?
REMEMBER! Reality is an illusion, the universe is a hologram, BUY GOLD! BYE!!


OmarHack

Cita de: Meine programmen en  8 Julio 2013, 17:36 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. 

I like to test things.