无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 4897|回复: 17

怪事:写了三次pause竟然停了4次(8楼有更大的问题)

[复制链接]
发表于 2012-2-19 10:36:08 | 显示全部楼层

回复 #1 2011czmxbb52 的帖子

@echo off
pause
call :r 0015.3
pause
:r
set hf=%1
::set hf==A%$d=$!=%t:*=%*=!!%!%=%hf:*^=%=?%#%|ECHO YY
echo %hf%
pause



执行流程如下

pause
::跳至r标签处理
set hf=%1
echo %hf%
pause
::r标签处理结束
::call结束 返回原处继续向下执行
pause
::准确来说在上面的pause后应该接一个exit  否则的话就会继续向下执行  这也是第四个pause出现的原因
set hf=%1
echo %hf%
pause
回复

使用道具 举报

发表于 2012-2-19 11:44:49 | 显示全部楼层

回复 #3 jh1688 的帖子

这个得看LZ了  还没看懂LZ要干嘛
回复

使用道具 举报

发表于 2012-2-19 13:40:19 | 显示全部楼层

回复 #7 2011czmxbb52 的帖子

@echo off
pause
call :r 0015.3
pause
:r
set hf=%1
::set hf==%t:*=%*=!!A%$d=$!=%!%=%hf:*^=%=?%#%|ECHO YY
echo %hf%
pause

看流程就知道了
pause
:跳至f标签
set hf=%1
::输出hf值,此时为 0015.3
echo %hf%
pause
::call结束返回原处
pause
::此时%1值为空,等同于set hf= ,即清除变量hf
set hf=%1
::接上句,变量hf已被清除,等同于 echo ,输出echo当前状态,由第一句的echo off,即当前echo处于关闭状态
echo %hf%
pause

::全部结束
回复

使用道具 举报

发表于 2012-2-19 13:50:05 | 显示全部楼层

回复 #8 2011czmxbb52 的帖子

虽然是被注释掉了  但是在执行时不是直接跳过的  还是会扩展 "%hf:"  因为变量hf存在  扩展就会出错

补充一句:想不出错的话只要改变引号里的四个字符就行了  比如随意加个别的  或者去掉几位  只要不是这个顺序就行了

[ 本帖最后由 sratlf 于 2012-2-19 13:51 编辑 ]
回复

使用道具 举报

发表于 2012-2-19 21:33:34 | 显示全部楼层

回复 #12 pznpt 的帖子

你自己试下就知道了

如果扩展指的是 %* 的话  那么为什么将"%hf:*"改为"%haf:*" "%hbf:*" "%f:*" "%h:*" 等等就不报错了呢。。。
回复

使用道具 举报

发表于 2012-2-19 22:33:07 | 显示全部楼层

回复 #14 pznpt 的帖子

没看懂... 是说 set hd=0015.3这个吗  这个扩展的是%1  没任何错误  

你可以试着在 set hf=%1 后面加一行 echo %hf% 然后看结果  是可以输出变量hf的值的

因此出错的就是被注释的那行  至于为什么  我同样不知道
回复

使用道具 举报

发表于 2012-2-20 14:46:09 | 显示全部楼层

回复 #16 pznpt 的帖子

错误提示是 “此时不应有 ....”  那一串字符是 %hf:*后面的

从截图中也能看出来  0015.3能显示说明扩展%*成功了  失败的是后面部分
回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-11-28 08:21

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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