BATCH - Demande d'informations à propos de certaines command

Une difficulté, une précision posez vos questions

Modérateur : WIN32-[GG]

Répondre
Synesis
Batcheur occasionnel
Messages : 5
Enregistré le : 18 mars 2017 22:48

BATCH - Demande d'informations à propos de certaines command

Message par Synesis »

Bonjour à toutes et à tous, je suis face à un problème de "taille" (si on peut appeler ça comme ça ).

Cela fait 2 semaines que je créé des programmes BATCH sous Windows 7 en mode "Automate" (càd sans tuto ou de personnes de mon entourage pour m'aider).


Je cherche des commandes simples et efficaces pour réaliser les actions suivantes (ce n'est pourtant pas faute d'avoir chercher ) :

- Une commande qui retarderait une autre commande, c'est à dire un délai (j'ai essayé le "timeout /t nombre" mais sans succès).

- Une commande qui effectuerait les commandes suivantes sur la même ligne horizontale (j'ai essayé le "echo -n texte" mais sans résultat non plus ).

- Une commande qui changerait la couleur de certains mots (la commande color fait effet sur le programme entier).

- Une commande pour créer un bouton (interaction avec le cmd),c'est à dire, dans mon cas, un rectangle qui lorsque l'on clique dessus, lance un
fichier batch ?
╔══════════════════╗
║ I n t r o d u c t i o n - - - - -║ → start :J/BATCH/INTERDIT/INTRODUCTION/Introduction.bat
╚══════════════════╝
╔══════════════════╗
║ C a l c u l a t r i c e - - - - -║ → start :J/BATCH/INTERDIT/FINAL/Calculatrice/Calculatrice.bat
╚══════════════════╝

J'espère que vous pourrez m'aider à résoudre ces problèmes et vous remercie d'avance .
PS : Je n'ai que 15ans alors si c'est un truc stupide, vous énervez pas .
barnabe0057
SuperBatcher
Messages : 105
Enregistré le : 24 janv. 2017 13:41

Re: BATCH - Demande d'informations à propos de certaines command

Message par barnabe0057 »

Bonsoir,

Concernant tes deux derniers souhaits, c'est-à-dire changer les couleurs localement et cliquer sur un rectangle, tu peux utiliser Batbox :

http://dos9.org/doc/en/html/batbox.html

http://batch.xoo.it/t2911-TUTO-INFOS-For-Batbox-exe.htm

A part ça je ne comprend pas pourquoi la commande timeout ne fonctionne pas pour toi.

Concernant l'exécution des commandes sur la même ligne, tu peux certainement y arriver en rusant un peu, mais si tu veux de l'aide il faut nous donner plus de détails.
Synesis
Batcheur occasionnel
Messages : 5
Enregistré le : 18 mars 2017 22:48

Re: BATCH - Demande d'informations à propos de certaines command

Message par Synesis »

Encore toi Barnabé :o Merci beaucoup pour ta réponse mais le site qui explique le batbox est entièrement en anglais et ... j'ai des difficultés. Pour ta dernière phrase, c'est un programme bête : Faire un alphabet auto. C'est à dire, lorsque je marque une lettre, le programme marque automatiquement la suite mais sur la ligne de réponse au fur et à mesure (avec un timeout à chaque fois) mais le timeout veut pas ou alors, je ne sais pas l'utiliser (je pense que c'est la 2e solution). Peux-tu me dire comment faire un echo sans passer de ligne et m'expliquer l'écriture du timeout ? Merci d'avance :geek:
Coldwind, si tu as skype, je veux bien que tu m'explique ça :)
barnabe0057
SuperBatcher
Messages : 105
Enregistré le : 24 janv. 2017 13:41

Re: BATCH - Demande d'informations à propos de certaines command

Message par barnabe0057 »

Voilà le code pour ne pas aller à la ligne, c'est comme un tour de magie :

Code : Tout sélectionner

@echo off
color f0
title Alphabet Automatique V.3

:START
cls
echo Veuillez entrer une lettre en MAJUSCULE.
echo Pour arreter le programme, veuillez ecrire "STOP".

set /p saisie=

if /i "%saisie%"=="STOP" goto :eof

:: on ne récupère qu'un seul caractère dans le cas où la saisie serait composée de plusieurs lettres
set saisie=%saisie:~-1%

:: on vérifie que la lettre saisie soit bien une majuscule
echo %saisie% | findstr "A B C D E F G H I J K L M N O P Q R S T U V W X Y Z" > nul || goto START

:: on utilise la lettre saisie pour découper l'alphabet en deux parties (%%A et %%B)
for /f "tokens=1,2 delims=%saisie%" %%A in ('echo ABCDEFGHIJKLMNOPQRSTUVWXYZ') do (
cls
echo Veuillez entrer une lettre en MAJUSCULE.
echo Pour arreter le programme, veuillez ecrire "STOP".
echo %saisie%%%B
)

pause

exit
Concernant Batbox je t'ai rajouté un tutoriel en français ;)
Modifié en dernier par barnabe0057 le 02 avr. 2017 02:18, modifié 1 fois.
barnabe0057
SuperBatcher
Messages : 105
Enregistré le : 24 janv. 2017 13:41

Re: BATCH - Demande d'informations à propos de certaines command

Message par barnabe0057 »

J'ai trouvé comment ajouter une temporisation, plutôt compliqué mais ça devrait beaucoup te plaire :

Code : Tout sélectionner

@echo off
color f0
title Alphabet Automatique V.3
Setlocal enableextensions enabledelayedexpansion

:START
cls
echo Veuillez entrer une lettre en MAJUSCULE.
echo Pour arreter le programme, veuillez ecrire "STOP".

set /p saisie=

if /i "%saisie%"=="STOP" goto :eof

:: on ne récupère qu'un seul caractère dans le cas où la saisie serait composée de plusieurs lettres
set saisie=%saisie:~-1%

:: on vérifie que la lettre saisie soit bien une majuscule
echo %saisie% | findstr "A B C D E F G H I J K L M N O P Q R S T U V W X Y Z" > nul || goto START

:: on utilise la lettre saisie pour découper l'alphabet en deux parties (%%A et %%B)
for /f "tokens=1,2 delims=%saisie%" %%A in ('echo ABCDEFGHIJKLMNOPQRSTUVWXYZ') do (

if "%saisie%" == "A" (set chaine=ABCDEFGHIJKLMNOPQRSTUVWXYZ) else (set chaine=%saisie%%%B)

for /L %%K in (0,1,26) do (
set lettre=!chaine:~%%K,1!

if not "!lettre!5" == "5" (
set alpha=!alpha!!lettre!
cls
echo Veuillez entrer une lettre en MAJUSCULE.
echo Pour arreter le programme, veuillez ecrire "STOP".
echo !alpha!
ping -n 1 localhost > nul
)

)
)

Endlocal

pause

exit
137Cs
Batcheur occasionnel
Messages : 3
Enregistré le : 25 mai 2016 08:45

Re: BATCH - Demande d'informations à propos de certaines command

Message par 137Cs »

Fermeture de la console avec ces caractères < > " | ^
et affichage erroné avec ceux-ci & !
cold_wind a écrit :salut, pour le timeout aussi y'a moyen de ruser. Quelques lignes de code et c'est plié.
j'en ai un a ta dispo si tu veux.
Ton code m'intéresse, je voudrais le comparer à un des miens qui fait la même chose.
barnabe0057
SuperBatcher
Messages : 105
Enregistré le : 24 janv. 2017 13:41

Re: BATCH - Demande d'informations à propos de certaines command

Message par barnabe0057 »

137Cs a écrit :Fermeture de la console avec ces caractères < > " | ^
et affichage erroné avec ceux-ci & !
C'est pas très grave, ça se corrige facilement ;)

edit : j'ai parlé trop vite, je ne sais pas trop pourquoi mais j'arrive pas à filtrer ces caractères spéciaux, surtout les <>
Synesis
Batcheur occasionnel
Messages : 5
Enregistré le : 18 mars 2017 22:48

Re: BATCH - Demande d'informations à propos de certaines command

Message par Synesis »

De retour !
Salut, cette fois ci, je souhaite créer un bouton qui, lorsque l'on clique dessus, écrive un caractère sur une ligne avec un set/p. Voici mon programme défectueux :

Code : Tout sélectionner

@echo off 
title [  C A L C U L A T R I C E  ]

:start
cls
color 0e
echo                                    ___________
echo                        ___...---°°°           °°°---...___
echo                __..--°°             _________             °°--..__
echo            _.°°        .------°°°°°°         °°°°°°-------.       °°-._
echo     .-*°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°*-.
echo    /_.-._.-._.-._.-._.-._.-._.-._.-._.-._.-._.-._.-._.-._.-._.-._.-._.-._.-._.\
echo   #   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   #
echo   #.-._.-._.-._.-._.-._.-._.-._.-._.-._.-._.-._.-._.-._.-._.-._.-._.-._.-._.-.#
echo   [.-._.-._.-._.-._.-._.-._.-._.-._.-._.-._.-._.-._.-._.-._.-._.-._.-._.-._.-.]
echo   \    /  \    /                                                  \    / \    /
echo    [  ]    [  ]                                                    [  ]   [  ]
echo    [  ]    [  ]         C  A  L  C  U  L  A  T  R  I  C  E         [  ]   [  ]
echo    [  ]    [  ]         ° ° ° ° ° ° ° ° ° ° ° ° ° ° ° ° ° °        [  ]   [  ]
echo   /____\  /____\         ° ° ° ° ° ° ° ° ° ° ° ° ° ° ° ° °        /____\ /____\
echo.
echo.

batbox /c 0xe0 /d "                                                                                " /c 0x0e
batbox /c 0xe0 /d "   # Dites "STOP" pour arreter le processus.                                    " /c 0x0e
batbox /c 0xe0 /d "     # Veuillez entrer votre calcul a l'aide des commandes ci-dessous :           " /c 0x0e
batbox /c 0xe0 /d "                                                                                " /c 0x0e

echo.
echo    ┌───┬─────────────────────────────┐
echo    │ - │   S O U S T R A C T I O N   │ 
echo    └───┴─────────────────────────────┘
echo    ┌───┬─────────────────────────────┐
echo    │ * │ M U L T I P L I C A T I O N │ 
echo    └───┴─────────────────────────────┘
echo    ┌───┬─────────────────────────────┐
echo    │ / │       D I V I S I O N       │ 
echo    └───┴─────────────────────────────┘
echo    ┌───┬─────────────────────────────┐
echo    │ + │       A D D I T I O N       │ 
echo    └───┴─────────────────────────────┘
echo.
for /F "tokens=1,2 delims=:" %%A in ('BatBox /m') do (
set Y=%%B
set X=%%A
)
if %Y% lss 22 goto start
if %Y% lss 25 echo -n "-"
if %Y% lss 28 echo -n "*"
if %Y% lss 31 echo -n "/"
if %Y% lss 34 echo -n "+"
setlocal

:debut 
set /p cmdresult=Opération : 
if %cmdresult%==STOP goto eof
if %cmdresult%==stop goto eof
if %cmdresult%==Stop goto eof
if %cmdresult%==RESET goto start
if %cmdresult%==reset goto start
if %cmdresult%==Reset goto start
if "%cmdresult:~0,1%"=="q" ( goto eof
) 
if "%cmdresult:~0,1%"=="h" ( 
   call hex %cmdresult:~1% >nul 
   goto result
) 
set /a result=%cmdresult% 

:result
cls
echo.
echo    ╔═══════════════════════════════════════════════════════════════════╗
echo    ║                          R  E  S  U  L  T                         ║
echo    ╚═══════════════════════════════════════════════════════════════════╝
echo.
batbox /c 0xe0 /d "   # Le resultat est %result%.                                                         " /c 0x0e
echo.
pause
goto start

:eof
Répondre