批处理中goto语句自动退出的问题
@echooffsetlocalenabledelayedexpansionset/an=0:loopset/an+=1title!n!echo!n!>try.txtca...
@echo off
setlocal enabledelayedexpansion
set /a n=0
:loop
set /a n+=1
title !n!
echo !n!>try.txt
call :h back
:back
goto :loop
:h
goto %1
上面的批处理,运行705次后自动退出,每次都是这样
请教是什么原因导致的
win 7 下是705次,xp 下面是1241次
看来是系统有关,但不知道具体的原因
2楼的改法完全无法实现我另外一个批处理的功能了,请各位再帮忙想想原因
呵呵,我希望实现的就是传递参数的跳转,这样可以模拟高级语言的函数回调
先谢谢: sherry22422 不知道有没有人有解决的方法,如果没有,这段代码的重复性就大了
现在我换了一种思路来做:使用全局变量记录调用的函数、传递的参数、返回的位置、返回值
修改后的代码:
@echo off
setlocal enabledelayedexpansion
set /a n=0
:loop
set /a n+=1
title !n!
echo !n!>try.txt
set funt_location=back
:back
goto :loop
:h
goto !funt_location!
感谢:sherry22422提醒 展开
setlocal enabledelayedexpansion
set /a n=0
:loop
set /a n+=1
title !n!
echo !n!>try.txt
call :h back
:back
goto :loop
:h
goto %1
上面的批处理,运行705次后自动退出,每次都是这样
请教是什么原因导致的
win 7 下是705次,xp 下面是1241次
看来是系统有关,但不知道具体的原因
2楼的改法完全无法实现我另外一个批处理的功能了,请各位再帮忙想想原因
呵呵,我希望实现的就是传递参数的跳转,这样可以模拟高级语言的函数回调
先谢谢: sherry22422 不知道有没有人有解决的方法,如果没有,这段代码的重复性就大了
现在我换了一种思路来做:使用全局变量记录调用的函数、传递的参数、返回的位置、返回值
修改后的代码:
@echo off
setlocal enabledelayedexpansion
set /a n=0
:loop
set /a n+=1
title !n!
echo !n!>try.txt
set funt_location=back
:back
goto :loop
:h
goto !funt_location!
感谢:sherry22422提醒 展开
展开全部
这个问题有点奇怪 ,
我的是1241次。。
刚刚又实验了下 。
把跳转和call去掉了些。
变成这样
@echo off
setlocal enabledelayedexpansion
:loop
set /a n+=1
title !n!
echo !n!>try.txt
goto loop
就对了 。
问题可能出在
call :h back
这句,不管是
call :h back
还是
call :h loop
我的都会在1241次退出。
应该是传递参数的时候出了问题。
这样写还是1241次
@echo off
setlocal enabledelayedexpansion
:loop
set /a n+=1
title !n!
echo !n!>try.txt
call :h bk
call :i back
:back
echo !n!
goto loop
:h
goto %1
:i
goto %i
:bk
goto back
赶紧 膜拜 sherry22422 大大 。 - -、
我的是1241次。。
刚刚又实验了下 。
把跳转和call去掉了些。
变成这样
@echo off
setlocal enabledelayedexpansion
:loop
set /a n+=1
title !n!
echo !n!>try.txt
goto loop
就对了 。
问题可能出在
call :h back
这句,不管是
call :h back
还是
call :h loop
我的都会在1241次退出。
应该是传递参数的时候出了问题。
这样写还是1241次
@echo off
setlocal enabledelayedexpansion
:loop
set /a n+=1
title !n!
echo !n!>try.txt
call :h bk
call :i back
:back
echo !n!
goto loop
:h
goto %1
:i
goto %i
:bk
goto back
赶紧 膜拜 sherry22422 大大 。 - -、
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在CMD环境下运行得到
****** B A T C H R E C U R S I O N exceeds STACK limits ******
Recursion Count=1240, Stack Usage=90 percent
****** B A T C H PROCESSING IS A B O R T E D ******
说明最大递归次数是1240
****** B A T C H R E C U R S I O N exceeds STACK limits ******
Recursion Count=1240, Stack Usage=90 percent
****** B A T C H PROCESSING IS A B O R T E D ******
说明最大递归次数是1240
参考资料: http://www.cn-dos.net/forum/viewthread.php?tid=46872&fpage=9&sid=W8939o
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
改成这样吧,反正你是各行,变量延迟就不用了
@echo off
set /a n=0
:loop
set /a n+=1
title %n%
echo %n%>try.txt
call :h back
:back
goto :loop
:h
goto loop
或者用下面这个,无限次
@echo off
set /a n=0
:loop
set /a n+=1
title %n%
echo %n%>try.txt
goto :loop
@echo off
set /a n=0
:loop
set /a n+=1
title %n%
echo %n%>try.txt
call :h back
:back
goto :loop
:h
goto loop
或者用下面这个,无限次
@echo off
set /a n=0
:loop
set /a n+=1
title %n%
echo %n%>try.txt
goto :loop
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询