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

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

本帖最后由 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的结果不明白为何这样?实在想不通。请老师们解释一下!谢谢
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set a=2
  4. echo !a!>>d:\567.txt
  5. pause
复制代码
我只能说,变量延迟常常可以解决一些奇怪的问题
为何批处理不适合做界面
为何随风讨厌call命令
http://bbs.bathome.net/thread-4482-1-10.html

TOP

本帖最后由 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等多种变体。
1

评分人数

看得多说得多,远比不上写得多。

TOP

返回列表