[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[其他] 批处理echo输出为何显示“处于关闭状态”?

本帖最后由 pcl_test 于 2016-11-16 09:35 编辑

代码如下:
  1. @echo off
  2. set /a loop=0
  3. :loop
  4. set /a loop+=1
  5. set input=%loop%
  6. echo %input%
  7. echo %input%>>a.txt
  8. pause
  9. goto loop
复制代码
运行结果:
1
2
echo处于关闭状态
...

实在不明白为什么会出现echo处于关闭状态。

[ 本帖最后由 winger_w 于 2010-12-22 19:16 编辑 ]

  1. @echo off
  2. set /a loop=0
  3. :loop
  4. set /a loop+=1
  5. set input=%loop%
  6. echo,%input%
  7. >>a.txt echo,%input%
  8. pause
  9. goto :loop
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

请问能讲解一下为什么吗?

TOP

主要是想知道那段问题代码为什么会有错误,能指点一下吗?

TOP

就是啊,挺奇怪的。2楼的给解释一下呗

TOP

  1. @echo off
  2. set /a loop=0
  3. :loop
  4. set /a loop+=1
  5. >>a.txt echo %loop%
  6. pause
  7. goto :loop
复制代码
我刚试了,这样也能有正确的结果
但是还是不明白为什么写成echo %loop%>>a.txt就不行了

TOP

回复 4楼 的帖子

你把@echo off删掉,再执行一遍看看吧。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

请添加
setlocal enabledelayedexpansion
在set /a loop=0前面就不会出现"ECHO处于关闭状态…"了。

TOP

echo %input%>>a.txt
%input%的部分内容会成为>>的句柄而产生错误
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

回复 8楼 的帖子

的确使用延迟扩展是没有问题,但是,
这里的echo %input%>>a.txt是一个完整的命令,input在执行扩展前已经被更新为新的值了,我觉得不存在延迟扩展的问题

TOP

回复 9楼 的帖子

部分内容成为>>的句柄怎么理解?%input%在第二次循环时,内容就是2了~~~

TOP

我又试了,这个应该是cmd的一个bug。
如果改成
  1. @echo off
  2. set /a loop=10
  3. :loop
  4. set /a loop+=1
  5. echo %loop%>>a.txt
  6. pause
  7. goto :loop
复制代码
得到的是正确的结果。
如果loop为个位数1,%loop%会被认为是" 1",前面有个空格,但是如果是两位数10,就被认为是"10",前面没有空格。。。。
当echo  1时(注意,1前面有两个空格),此时cmd会认为这句话就是echo,从而输出"echo处于关闭状态"。

TOP

回复 12楼 的帖子

三个默认的句柄:
0代表标准输入
1代表标准输出
2代表出错
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

返回列表