窗口 – 为什么这段代码说回声关闭?

这段代码有什么问题?说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

在这里使用构造回波(而不是回声),因为这将确保回显一个空行,即使变量是空的.

相关文章

Windows注册表操作基础代码 Windows下对注册表进行操作使用的...
黑客常用WinAPI函数整理之前的博客写了很多关于Windows编程的...
一个简单的Windows Socket可复用框架说起网络编程,无非是建...
Windows文件操作基础代码 Windows下对文件进行操作使用的一段...
Winpcap基础代码 使用Winpcap进行网络数据的截获和发送都需要...
使用vbs脚本进行批量编码转换 最近需要使用SourceInsight查看...