IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Scripts/Batch Discussion :

Tester le caractère saisi au clavier [Trucs & Astuces]


Sujet :

Scripts/Batch

  1. #1
    Membre Expert
    Avatar de I'm_HERE
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 013
    Par défaut Tester le caractère saisi au clavier
    Salut,

    La commande "PAUSE" permet de faire une <<PAUSE >> qui sera annulé par la pression de n'importe quelle touche, malheurseusement cette commande ne renvoie pas d'ERRORLEVEL


    La commande "SET/P PAUSE=" permet aussi de faire une <<PAUSE>> qui ne sera annulé que lorsqu'on appuye sur la touche <<ENTER>> et va renvoyer un "0" si on saisi une chaine de caractères (ou un espace), sinon c'est "1" On pourra alors
    tester si l'utilisateur à saisie quelque chose ou pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    echo %ERRORLEVEL%
    set /p PAUSE=
    echo %ERRORLEVEL%
    cette méthode permet de tester si la variable "PAUSE" est definie ou pas mais ne permet pas de tester
    la touche saisie par l'utilisateur.


    cette formule "SET/P=" va fixer l'ERRORLEVEL à "1" car la syntaxe est incorrecte mais ça ne retournera pas de message d'erreur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SET/P=
    echo %ERRORLEVEL%


    est ce qu'on peux tester le caractère saisi au clavier ?

    Oui, c'est possible, en utilisant un petit utilitaire "reply.com".
    En réalite reply.com fixe un ERRORLEVEL égale au caractère ASCII associé à la touche entrer par l'utilisateur.
    mais on peux aussi "embarquer" cette utilitaire dans notre fichier de commandes.

    voici quelques ERRORLEVEL renvoyer par "reply" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    F1=59    A=97   M=109   Y=121  Flêche-Haut=72
    F2=60    B=98   N=110   Z=122  Flêche-bas=80
    F3=61    C=99   O=111          Flêche-gauche=75
    F4=62    D=100  P=112          Flêche-droite=77
    F5=63    E=101  Q=113          ENTER=13
    F6=64    F=102  R=114          EChap=27
    F7=65    G=103  S=115          Espace=32
    F8=66    H=104  T=116          TAB=9
    F9=67    I=105  U=117          BKSP=8
    F10=68   J=106  V=118
    F11=133  K=107  W=119
    F12=134  L=108  X=120
    et voici un petit exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    @echo off & goto:skip
    n k.com
    e 0000 4D 5A 2E 00 01 00 00 00 02 00 00 10 FF FF F0 FF
    e 0010 FE FF 00 00 00 01 F0 FF 1C 00 00 00 00 00 00 00
    e 0020 B4 08 CD 21 3C 00 75 02 CD 21 B4 4C CD 21
    rcx
    002E
    w0
    q
    :skip
    debug < "%~f0" >nul 
    echo.
    echo DEMO:   Pressez une touche de 0-9
    echo.
    :: on appel k.com l'executable créer par "debug"
    k
    if %errorlevel%==48 (set b=0.........)
    if %errorlevel%==49 (set b=.1........)
    if %errorlevel%==50 (set b=..2.......)
    if %errorlevel%==51 (set b=...3......)
    if %errorlevel%==52 (set b=....4.....)
    if %errorlevel%==53 (set b=.....5....)
    if %errorlevel%==54 (set b=......6...)
    if %errorlevel%==55 (set b=.......7..)
    if %errorlevel%==56 (set b=........8.)
    if %errorlevel%==57 (set b=.........9)
    ::
    echo         Touche: %b%
    del k.com
    set/p= & exit /b

  2. #2
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 19
    Par défaut
    et voici un petit exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    @echo off & goto:skip
    n k.com
    e 0000 4D 5A 2E 00 01 00 00 00 02 00 00 10 FF FF F0 FF
    e 0010 FE FF 00 00 00 01 F0 FF 1C 00 00 00 00 00 00 00
    e 0020 B4 08 CD 21 3C 00 75 02 CD 21 B4 4C CD 21
    rcx
    002E
    w0
    q
    :skip
    debug < "%~f0" >nul 
    echo.
    echo DEMO:   Pressez une touche de 0-9
    echo.
    :: on appel k.com l'executable créer par "debug"
    k
    if %errorlevel%==48 (set b=0.........)
    if %errorlevel%==49 (set b=.1........)
    if %errorlevel%==50 (set b=..2.......)
    if %errorlevel%==51 (set b=...3......)
    if %errorlevel%==52 (set b=....4.....)
    if %errorlevel%==53 (set b=.....5....)
    if %errorlevel%==54 (set b=......6...)
    if %errorlevel%==55 (set b=.......7..)
    if %errorlevel%==56 (set b=........8.)
    if %errorlevel%==57 (set b=.........9)
    ::
    echo         Touche: %b%
    del k.com
    set/p= & exit /b
    Bonjour,

    Le sujet est intéressant, j'ai voulu essayer.
    Voici le résultat de l'exécution du code copié-collé dans un script DOS :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    'debug' n’est pas reconnu en tant que commande interne
    ou externe, un programme exécutable ou un fichier de commandes.
    
    DEMO:   Pressez une touche de 0-9
    
    'k' n’est pas reconnu en tant que commande interne
    ou externe, un programme exécutable ou un fichier de commandes.
            Touche:
    Impossible de trouver D:\Patrick\Desktop\k.com
    J'ai sans doute loupé quelque chose...mais quoi SVP !?

  3. #3
    Nouveau candidat au Club
    Homme Profil pro
    Collégien
    Inscrit en
    Octobre 2024
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Collégien

    Informations forums :
    Inscription : Octobre 2024
    Messages : 2
    Par défaut
    Citation Envoyé par Patrick22 Voir le message
    Bonjour,

    Le sujet est intéressant, j'ai voulu essayer.
    Voici le résultat de l'exécution du code copié-collé dans un script DOS :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    'debug' n’est pas reconnu en tant que commande interne
    ou externe, un programme exécutable ou un fichier de commandes.
    
    DEMO:   Pressez une touche de 0-9
    
    'k' n’est pas reconnu en tant que commande interne
    ou externe, un programme exécutable ou un fichier de commandes.
            Touche:
    Impossible de trouver D:\Patrick\Desktop\k.com
    J'ai sans doute loupé quelque chose...mais quoi SVP !?
    bonjour,
    voici les reponses aux erreurs renvoyées par votre .bat:

    'debug' n’est pas reconnu en tant que commande interne
    ou externe, un programme exécutable ou un fichier de commandes. signifie que vous etes sur un windows moderne qui n'a donc pas debug.exe préinstalé donc vous ne pouvez pas l'utiliser pour creer des .COM comme montré.

    'k' n’est pas reconnu en tant que commande interne
    ou externe, un programme exécutable ou un fichier de commandes.
    la normalement vous etiez censé executer le .COM que vous aviez creer sauf que vous ne l'avez pas creer car vous n'aviez pas debug.exe.

    Impossible de trouver D:\Patrick\Desktop\k.com
    la vous avez tenter de suprimer le .COM mais il n'existait pas donc ca a echouer.

    j'espere avoir repondu a toutes vos questions.

  4. #4
    Membre Expert Avatar de edgarjacobs
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2011
    Messages
    765
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2011
    Messages : 765
    Par défaut
    Hello,

    @toxic fish: alors, d'accord, tu es nouveau sur le site, mais le dernier post date d'il y a quatre ans, on peut donc supposer que ça n'intéresse plus les posteurs....
    On écrit "J'ai tort" ; "tord" est la conjugaison du verbre "tordre" à la 3ème personne de l'indicatif présent ;)

Discussions similaires

  1. Réponses: 23
    Dernier message: 16/10/2014, 18h39
  2. Réponses: 3
    Dernier message: 21/03/2010, 21h22
  3. Enregistrer caractère saisi au clavier
    Par sokai dans le forum Scripts/Batch
    Réponses: 3
    Dernier message: 26/11/2009, 22h34
  4. Hook clavier, le caractère saisi est doublé
    Par Sunchaser dans le forum Windows
    Réponses: 2
    Dernier message: 12/02/2007, 20h04
  5. [C#] mémoriser les caractères saisis au clavier
    Par tiboleo dans le forum Windows Forms
    Réponses: 1
    Dernier message: 04/06/2006, 12h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo