Come ha affermato Laurent, non è un problema dello ECHO
, è un problema del codice.
Nei file batch, i blocchi vengono analizzati completi prima di essere eseguiti.
Durante l'analisi di tutta l'espansione percentuale verrà eseguita, quindi sembra che le variabili non possano essere modificate all'interno di un blocco.
Ma per questo esiste l'espansione ritardata, l'espansione ritardata verrà valutata nel momento dell'esecuzione non durante l'analisi del blocco.
Deve essere abilitato, per impostazione predefinita l'espansione ritardata è disabilitata.
@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
Ho usato qui il costrutto echo(
anziché echo
come questo farà sì eco una riga vuota anche se la variabile è vuota.
Hai provato a rimuovere '@ECHO off 'in alto? –
Poi dice che Echo è acceso. – user1979801