加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

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

发布时间:2020-12-13 20:07:43 所属栏目:Windows 来源:网络整理
导读:这段代码有什么问题?说ECHO是关闭的. @ECHO offset /p pattern=Enter id:findstr %pattern% .a.txt resultif %errorlevel%==0 (set var2= resultecho %var2%set var1=%var2:~5,3%echo %var1% test.txtecho %var1%) else (echo error)del resultpause 任何
这段代码有什么问题?说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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读