Board logo

标题: [已解决]批处理定义一个变量从定向后两种写法的结果为何不同? [打印本页]

作者: stu_p    时间: 2011-9-25 10:15     标题: [已解决]批处理定义一个变量从定向后两种写法的结果为何不同?

本帖最后由 stu_p 于 2011-9-26 09:07 编辑

例如:1.bat:
  1. @echo off
  2. set a=2
  3. (echo %a%)>>d:\567.txt
  4. pause
复制代码
能成功将%a%赋值并将写入到d:\567.txt

2.bat:
  1. @echo off
  2. set a=2
  3. echo %a%>>d:\567.txt
复制代码
提示:echo 处于关闭状态。
1.bat 与2.bat的结果不明白为何这样?实在想不通。请老师们解释一下!谢谢
作者: raymai97    时间: 2011-9-25 10:30

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set a=2
  4. echo !a!>>d:\567.txt
  5. pause
复制代码
我只能说,变量延迟常常可以解决一些奇怪的问题
作者: weichenxiehou    时间: 2011-9-25 11:03

本帖最后由 weichenxiehou 于 2011-9-25 11:06 编辑

回复 1# stu_p
你将关键那句预处理一下就晓得了:
echo %a%>>d:\567.txt
处理成:
echo 2>>d:\567.txt
2被当成句柄了,所有的错误输出会被重定向到d:\567.txt。
解决方法:
>>d:\567.txt echo %a%
或echo %a% >>d:\567.txt等多种变体。




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2