Jak stwierdził Laurent, nie jest to problem z ECHO
, jest to problem twojego kodu.
W plikach wsadowych bloki są analizowane przed wykonaniem.
Podczas analizowania wszystkich rozszerzeń procentowych zostanie wykonane, więc wydaje się, że zmiennych nie można zmienić wewnątrz bloku.
Ale w tym przypadku opóźnione rozwinięcie, opóźnione rozwinięcie zostanie ocenione w momencie wykonania, a nie podczas analizowania bloku.
Musi być włączona, ponieważ domyślnie opóźnione rozszerzenie jest wyłączone.
@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
użyłem tutaj konstrukt echo(
zamiast echo
jak to zapewni powtarzając pusty wiersz nawet jeśli zmienna jest pusta.
Czy próbowałeś usunąć "@ECHO off" na wierzchu? –
Następnie mówi, że Echo jest włączone. – user1979801