Board logo

标题: [已解决]call %%var%% 为什么什么都不显示 [打印本页]

作者: q8249014     时间: 2009-10-8 18:38    标题: [已解决]call %%var%% 为什么什么都不显示
@echo off
set "test=echo.ok&echo.no"
call %%test%%
pause
以上命令是可以成功执行的,但是执行后什么都没有显示 根据预处理来解释 call: 第一次因为变量前是两个百分号,所以变量不被替换,然后脱掉一对百分号 变成 %test% 第二次变量前是一个百分号,然后替换%test%为echo.ok&echo.no 然后执行 根据ERRORLEVEL的值知道call 是执行成功的 可是为什么什么都没有显示呢? 各位版主 bat达人 帮忙分析一下啦 谢谢 [ Last edited by q8249014 on 2010-1-20 at 17:28 ]

作者: Hanyeguxing     时间: 2009-10-8 18:48
问题出在&上。 [ Last edited by Hanyeguxing on 2009-10-8 at 18:52 ]

作者: q8249014     时间: 2009-10-9 10:34
Originally posted by Hanyeguxing at 2009-10-8 06:48 PM: 问题出在&上。 [ Last edited by Hanyeguxing on 2009-10-8 at 18:52 ]
没回复到正点上哦

作者: Hanyeguxing     时间: 2009-10-9 11:22
问题出在call 在第2次变量扩展时对&的处理上 [ Last edited by Hanyeguxing on 2009-10-9 at 11:27 ]

作者: wxcute     时间: 2009-10-9 20:07
预处理是相当 “奇怪” 的!加上 P 本身对特殊字符的处理方法特殊就变成这个样子了,我想只要看遍所有有关预处理的帖子,应该会有所得。 要显示可以这样:
@echo off
set "test=echo.ok&echo.no"
call %%%test%%
pause
原因复杂到我说不清。

作者: q8249014     时间: 2009-10-14 16:04
首先感谢两位的回复~~! 4f的朋友还是没有回答到正点上哦 呵呵 当然我也觉得是处理“&”时出的问题 可是分析不出来为什么 请你试一下 call a^&a 个人觉得可能是call命令的一个bug 回5f
Originally posted by wxcute at 2009-10-9 08:07 PM: 预处理是相当 “奇怪” 的!加上 P 本身对特殊字符的处理方法特殊就变成这个样子了,我想只要看遍所有有关预处理的帖子,应该会有所得。 要显 ...
因为我是想达到一个延迟处理的效果,说不清楚啦 与其如上不如这样
@echo off
set "test=echo.ok&echo.no"
%test%
pause
你楼上的代码,之所以可以成功显示,是因为变量的扩展在第一次预处理的时候就被解析了。 call %test% 同样道理 还有预处理的解析没有那么“奇怪”,我预计在这几天出3篇帖子,给大家详细讲解一下预处理的一些知识 还是想请有能力的朋友帮忙分析一下 [ Last edited by q8249014 on 2009-10-14 at 16:15 ]