标题: [已解决]批处理定义一个变量从定向后两种写法的结果为何不同? [打印本页]
作者: stu_p 时间: 2011-9-25 10:15 标题: [已解决]批处理定义一个变量从定向后两种写法的结果为何不同?
本帖最后由 stu_p 于 2011-9-26 09:07 编辑
例如:1.bat:- @echo off
- set a=2
- (echo %a%)>>d:\567.txt
- pause
复制代码
能成功将%a%赋值并将写入到d:\567.txt
2.bat:- @echo off
- set a=2
- echo %a%>>d:\567.txt
复制代码
提示:echo 处于关闭状态。
1.bat 与2.bat的结果不明白为何这样?实在想不通。请老师们解释一下!谢谢
作者: raymai97 时间: 2011-9-25 10:30
- @echo off
- setlocal enabledelayedexpansion
- set a=2
- echo !a!>>d:\567.txt
- 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 |