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

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

[复制链接]
发表于 2011-9-25 10:15:55 | 显示全部楼层 |阅读模式
本帖最后由 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的结果不明白为何这样?实在想不通。请老师们解释一下!谢谢

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2011-9-25 10:30:15 | 显示全部楼层
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set a=2
  4. echo !a!>>d:\567.txt
  5. pause
复制代码
我只能说,变量延迟常常可以解决一些奇怪的问题
发表于 2011-9-25 11:03:55 | 显示全部楼层
本帖最后由 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技术 +1 收起 理由
stu_p + 1 OK

查看全部评分

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-18 02:46 , Processed in 0.019371 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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