J'utilise la fonction ci-dessous pour vérifier si l'écho est activé ou non, et comme vous pouvez le voir, il redirige le statut de l'écho puis utilise la sortie pour définir un indicateur :
FONCTION
:echos
echo > echo.txt & rem pipe ech status to a text file
@echo off
set _echos=yes
:: L'hypothèse par défaut est que l'écho était activé
CALL FileStringLength echo.txt & rem fetch string length. eq to 12 if off
IF %_strlength% EQU 12 (set _echos=no)
del echo.txt & rem zap temporary file
set "_strlength=" & rem zap temporary variable
set "_echos" & rem show status
IF %_echos% EQU yes (@echo on
) ELSE (
@echo off
)
:: /echos
Cela fonctionne bien, mais créer un fichier semble... peu élégant. alors j'ai pensé, hmmm pourquoi ne pas simplement faire une redirection ? remplacer le pipe par
>echo|set /p _str="redirection"
le résultat est comme ci-dessous, et lorsque je vérifie la variable de chaîne, elle n'est pas là :
redirection
>set _str
Variable d'environnement _str non définie
>
pas ce que je voulais. À un moment donné, dans les premières heures lorsque l'esprit vagabonde, j'ai obtenu le résultat ! Hourra ! je me suis écroulé magnifiquement sur le canapé ... mais je ne pouvais pas pour la vie de moi me rappeler quelle combinaison arcane de code a permis à la redirection de fonctionner ! soupir quelqu'un a-t-il résolu ce problème particulier ? ou n'était-ce qu'une hallucination provoquée par TOC dans les premières heures ?
0 votes
Ce n'est pas possible. Voir stackoverflow.com/a/46324404/3536342 qui explique pourquoi.
0 votes
Merci. Hallucination alors! ... mais au moins il y a une solution là. Et au mieux je peux me débarrasser de ce fichier temporaire en sautant dans et hors du dossier :-)