Wie Laurent sagte, es ist kein Problem der ECHO
, es ist ein Problem Ihres Codes.
In Batch-Dateien werden Blöcke vollständig analysiert, bevor sie ausgeführt werden.
Beim Parsing wird die gesamte prozentuale Expansion durchgeführt, daher scheint es, dass Ihre Variablen nicht innerhalb eines Blocks geändert werden können.
Aber dafür existiert die verzögerte Erweiterung, die verzögerte Erweiterung wird im Moment der Ausführung ausgewertet, nicht während der Blockierung.
Es muss aktiviert sein, standardmäßig ist die verzögerte Erweiterung deaktiviert.
@ECHO off
setlocal EnableDelayedExpansion
set /p pattern=Enter id:
findstr %pattern% .\a.txt > result
if %errorlevel%==0 (
set var2= <result
echo(!var2!
set var1=!var2:~5,3!
echo(!var1! > test.txt
echo(!var1!
) else (
echo error
)
del result
habe ich hier das Konstrukt echo(
statt echo
wie dies gewährleisten wird leer eine leere Zeile, selbst wenn die Variable Echo.
Haben Sie versucht, '@ECHO off' oben zu entfernen? –
Dann heißt es, Echo ist eingeschaltet. – user1979801