这段代码有什么问题?说ECHO是关闭的.
@ECHO off 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 pause
任何帮助是赞赏.
如Laurent所说,这不是ECHO的问题,这是您的代码的问题.
在批处理文件中,块被执行之前被解析完毕.
解析所有百分比扩展将完成,所以似乎您的变量在块内不能更改.
但是由于延迟扩展存在延迟,延迟扩展在执行时不会在分析块时进行评估.
必须启用,默认情况下延迟扩展被禁用.
@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
我在这里使用构造回波(而不是回声),因为这将确保回显一个空行,即使变量是空的.