找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 45303|回复: 12

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

[复制链接]
发表于 2010-12-22 17:44:21 | 显示全部楼层 |阅读模式
本帖最后由 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 编辑 ]
发表于 2010-12-22 19:19:55 | 显示全部楼层
  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
复制代码
 楼主| 发表于 2010-12-22 19:24:01 | 显示全部楼层
请问能讲解一下为什么吗?
 楼主| 发表于 2010-12-22 19:41:44 | 显示全部楼层
主要是想知道那段问题代码为什么会有错误,能指点一下吗?
发表于 2010-12-22 20:15:48 | 显示全部楼层
就是啊,挺奇怪的。2楼的给解释一下呗
 楼主| 发表于 2010-12-22 20:19:18 | 显示全部楼层
  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就不行了
发表于 2010-12-22 20:37:25 | 显示全部楼层

回复 4楼 的帖子

你把@echo off删掉,再执行一遍看看吧。
发表于 2010-12-22 22:55:26 | 显示全部楼层
请添加
setlocal enabledelayedexpansion
在set /a loop=0前面就不会出现"ECHO处于关闭状态…"了。
发表于 2010-12-23 03:15:15 | 显示全部楼层
echo %input%>>a.txt
%input%的部分内容会成为>>的句柄而产生错误
 楼主| 发表于 2010-12-23 09:30:30 | 显示全部楼层

回复 8楼 的帖子

的确使用延迟扩展是没有问题,但是,
这里的echo %input%>>a.txt是一个完整的命令,input在执行扩展前已经被更新为新的值了,我觉得不存在延迟扩展的问题
 楼主| 发表于 2010-12-23 09:32:17 | 显示全部楼层

回复 9楼 的帖子

部分内容成为>>的句柄怎么理解?%input%在第二次循环时,内容就是2了~~~
 楼主| 发表于 2010-12-23 09:36:44 | 显示全部楼层
我又试了,这个应该是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处于关闭状态"。
发表于 2010-12-23 09:46:51 | 显示全部楼层

回复 12楼 的帖子

三个默认的句柄:
0代表标准输入
1代表标准输出
2代表出错
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-18 04:06 , Processed in 0.020649 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表