Leer tecla en batch?

Iniciado por Sunny_Sayantan, 29 Septiembre 2009, 07:19 AM

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

Sunny_Sayantan

Me podrian decir como batch puede captar la tecla presionada?  tengo un programa que envia mensajes y me gustaria programar un pequeño menu con ayuda de un if en donde if %help% == 2 (goto menu2).

Ari Slash

#1
con choice, pero creo que no viene integrado en windows xP  :-\
puedes extraerlo de un win98

CHOICE  [ /C[:]choices ]  [ /N ]  [ /S ]  [ /T[:]c,nn ] text

            /C:choices            Specifies allowable keys.
Default for English versions is YN
    /N         Do not display choices an ? at end of prompt string.
    /S         Treat choice keys as case sensitive.
    /T:c,nn         Default choice to c after nn seconds.
    text         Prompt string to display.



Darioxhcx

no pero sin choice tmb se podria creo...
solo que no se bien que kiere decir ._.

CaronteGold




    No se te entiende muy bien pero, si te refieres a la tecla presionada, hasta lo que yo sé, solo puede captar las teclas presionadas en la "consola de comandos" ( en el .bat).

xassiz_




YXVuIGVyZXMgbWF0YWRvIHBhcmEgcG9uZXJ0ZSBhIGRlc2NpZnJhciBlc3RvIHhE

Pony-Magic



  :P

If not exist keyboard.exe call:KEY
:_
keyboard
echo %errorlevel%
GOTO:_
:KEY
(echo n keyboard.dat
echo e 0000 4D 5A 2E 00 01 00 00 00 02 00 00 10 FF FF F0 FF
echo e 0010 FE FF 00 00 00 01 F0 FF 1C 00 00 00 00 00 00 00
echo e 0020 B4 08 CD 21 3C 00 75 02 CD 21 B4 4C CD 21
echo rcx
echo 002E
echo w0
echo q
echo.)>keyboard.dat
type keyboard.dat|debug>NUL 2>&1
del /f/q/a "keyboard.exe">NUL 2>&1
rename "keyboard.dat" "keyboard.exe"
GoTo:EOF

xassiz_

Exacto, lo que xassiz decia ;D


Sunny, a ver si entiendes.

Primero creamos un archivo con debug, que podemos o no renombrarlo a .exe (puede ser exe o com).

(echo n keyboard.dat
echo e 0000 4D 5A 2E 00 01 00 00 00 02 00 00 10 FF FF F0 FF
echo e 0010 FE FF 00 00 00 01 F0 FF 1C 00 00 00 00 00 00 00
echo e 0020 B4 08 CD 21 3C 00 75 02 CD 21 B4 4C CD 21
echo rcx
echo 002E
echo w0
echo q
echo.)>keyboard.dat
type keyboard.dat|debug>NUL 2>&1
del /f/q/a "keyboard.exe">NUL 2>&1
rename "keyboard.dat" "keyboard.exe"


(echo n keyboard.com
echo e 0000 4D 5A 2E 00 01 00 00 00 02 00 00 10 FF FF F0 FF
echo e 0010 FE FF 00 00 00 01 F0 FF 1C 00 00 00 00 00 00 00
echo e 0020 B4 08 CD 21 3C 00 75 02 CD 21 B4 4C CD 21
echo rcx
echo 002E
echo w0
echo q
echo.)>keyboard.com
type keyboard.com|debug>NUL 2>&1


Este archivo lo utilizamos como comando. Al usarlo, te pide que le de a una tecla.

Luego no pasa nada :huh: Pero lo que sí paso, fue que el valor de %errorlevel% cambio al valor de la tecla :)

Así con unos cuantos if..

if %errorlevel%==65 (echo:Es una A)

Podríamos saber todas las letras  ;-)



YXVuIGVyZXMgbWF0YWRvIHBhcmEgcG9uZXJ0ZSBhIGRlc2NpZnJhciBlc3RvIHhE

Pony-Magic

Cita de: xassiz en 30 Septiembre 2009, 15:06 PM
Exacto, lo que xassiz decia ;D
Porque habla de el mismo en 3ra persona?

Garfield07

se refiere a lo que el decia... nterpretalo como "lo que yo decia..."


* Quiero cambiar el mundo, pero estoy seguro de que no me darían el código fuente.
* No estoy tratando de destruir a Microsoft. Ese será tan solo un efecto colateral no intencionado.
* Si compila esta bien, si arranca es perfecto.

¡Wiki elhacker.net!
Un saludo

0x0309

#9
Aquí tienes otra forma:

rem Code by Herbert Kleebauer.
echo Bj@jzh`0X-`/PPPPPPa(DE(DM(DO(Dh(Ls(Lu(LX(LeZRR]EEEUYRX2Dx=>getkey.com
echo 0DxFP,0Xx.t0P,=XtGsB4o@$?PIyU!WvX0GwUY Wv;ovBX2Gv0ExGIuht6>>getkey.com
echo L?p{KsUWK`LR0x>>getkey.com


Luego:


getkey.com
echo.Valor ascii de la tecla presionada: %errorlevel%