Commande IF en BATCH ne veut pas fonctionner :'(
Résolu
BenjaminA2mains
Messages postés
43
Date d'inscription
dimanche 1 août 2021
Statut
Membre
Dernière intervention
5 février 2023
-
Modifié le 21 juin 2022 à 18:24
BenjaminA2mains Messages postés 43 Date d'inscription dimanche 1 août 2021 Statut Membre Dernière intervention 5 février 2023 - 24 juin 2022 à 14:00
BenjaminA2mains Messages postés 43 Date d'inscription dimanche 1 août 2021 Statut Membre Dernière intervention 5 février 2023 - 24 juin 2022 à 14:00
A voir également:
- Commande IF en BATCH ne veut pas fonctionner :'(
- Commande en attente d'acceptation fnac ✓ - Forum Consommation et internet
- Invite de commande - Guide
- If exist ✓ - Forum Autoit / batch
- 'Ls' n’est pas reconnu en tant que commande interne - Forum Windows
- Commande terminal mac - Guide
2 réponses
barnabe0057
Messages postés
14294
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
28 mai 2023
4 881
Modifié le 21 juin 2022 à 20:33
Modifié le 21 juin 2022 à 20:33
Bonjour,
Je me suis permis de corriger quelques détails :
Pourquoi utiliser une commande externe alors que la commande native CERTUTIL permet de décoder/encoder en Base64 ?
“L'intelligence artificielle se définit comme le contraire de la bêtise naturelle.”
Je me suis permis de corriger quelques détails :
:TOKEN set "horodatage=%date:~0,2%/%date:~3,2%/%date:~6,4% %time:~0,8%" set "log=Log.log" set "token=token.tkn" ECHO %horodatage% ^| Vérifie la présence de token >> %log% IF NOT EXIST "%token%" ( ECHO %horodatage% ^| Aucun token trouvé >> %log% CLS batbox /c 0x7 TYPE %msg_02% batbox /c 0x2 SET /P "b= " IF "%b%"=="retour" GOTO CHEMIN ECHO %b% >> %token% .\exe\Base64Convertcmd /c 0 /l 0 %token% %token% ECHO %horodatage% ^| Écrit et encrypte le token >> %log% GOTO DL ) ELSE ( ECHO %horodatage% ^| Token trouvé >> %log% batbox /c 0x7 TYPE %msg_04% batbox /c 0x2 ) SET /P "e= " IF "%e%"=="oui" GOTO OUI IF "%e%"=="o" GOTO OUI IF "%e%"=="y" GOTO OUI IF "%e%"=="non" GOTO NON IF "%e%"=="n" GOTO NON :OUI ECHO %horodatage% ^| Décrypt le token >> %log% .\exe\Base64Convertcmd /c 2 /l 0 %token% %token% FOR /F %%a IN (%token%) DO ( SET "b=%%a" ECHO %horodatage% ^| Récupère le token décrypter >> %log% .\exe\Base64Convertcmd /c 0 /l 0 %token% %token% ECHO %horodatage% ^| Réencrypte le token >> %log% GOTO DL ) exit :NON DEL %token% ECHO %horodatage% ^| Supprime le token en mémoire >> %log% GOTO TOKEN
Pourquoi utiliser une commande externe alors que la commande native CERTUTIL permet de décoder/encoder en Base64 ?
“L'intelligence artificielle se définit comme le contraire de la bêtise naturelle.”
BenjaminA2mains
Messages postés
43
Date d'inscription
dimanche 1 août 2021
Statut
Membre
Dernière intervention
5 février 2023
24 juin 2022 à 14:00
24 juin 2022 à 14:00
Tout fonctionne parfaitement, merci pour votre aide :D
Prenez soin de vous
Prenez soin de vous
21 juin 2022 à 20:21
à noter que les variables msg et l'étiquette chemin n'existent pas; on peut par ailleurs colorer la ligne de commande et le texte associé sans utilitaire tiers en faisant l'echo d'une séquence d'échappement sur le style:
echo [101;93m COLORATION DE LA LIGNE DE COMMANDE [0m
jaune sur fond rouge dans cet exemple.
Enfin, en l'absence de @echo off, on va observer des hiéroglyphes dans la console du fait des accents: utiliser CHCP 65001.
Modifié le 21 juin 2022 à 23:14
Je ne connaissais pas l'existence de CERTUTIL, je vais me renseigner sur ça.
Par contre si j'utilise une variable pour la date et l'heure, mon heure sera fix et sera définit seulement sur le moment ou le script sera lancé non ?
Merci pour ton commentaire
21 juin 2022 à 23:19
Tu peux m'en dire un peu plus " l'echo d'une séquence d'échappement sur le style ", je ne suis pas sûr de comprendre.
Plus haut dans mon script j'utilise @echo off et CHCP 65001
Voici mon en-tête que je met à chaque script que je fais en bat, si tu as des recommandations à me faire :)
Merci pour ton commentaire
Modifié le 22 juin 2022 à 00:07
Il existe à ma connaissance au moins 3 moyens de colorer la console sans commande externe:
-en personnalisant le prompt par des séquences ANSI https://ss64.com/nt/prompt.html; par exemple:
prompt $e[40;33;1m$D$S$T$H$H$H$H$H$H$e[32;40;1m$G$S
va me rendre l'heure jj/mm/aaaa hh:mm en jaune sur noir (40,33) suivie du prompt et des commandes suivantes en vert sur noir (32,40).
Ce changement est persistant jusqu'à spécification d'autre chose.
-par la commande COLOR: https://ss64.com/nt/color.html
COLOR F4 va colorer l'intégralité de la console en rouge (4) sur blanc vif (F).
-via des séquences d'échappement ESC commandées par la commande ECHO, on en doit la synthèse à Michele Locati https://github.com/mlocati
Ainsi par exemple:
me rend BONJOUR en blanc sur fond bleu, et uniquement pour la ligne concernée par cette séquence.
Je n'arrive pas à copier les caractères de sorte qu'on les voit: il y a à gauche de 44 et de 0 une séquence d'échappement obtenue comme suit (une fois réalisée une fois, par contre, on peut la copier-coller):
https://ss64.com/nt/syntax-ansi.html
On peut y faire toutes les fantaisies, y compris écrire une partie d'une ligne différemment d'une autre; je tiens les codes couleur à ta disposition s'ils t'intéressent.
22 juin 2022 à 00:45
Il rend même indisponible la visualisation du texte quand il est décodé. (voir image)
Merci encore, CERTUTIL à l'air d'être très complet.