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

[其他] 批处理多次反复call,如果得到设置值如何返回第一次call呢?

[复制链接]
发表于 2017-12-30 20:50:45 | 显示全部楼层 |阅读模式
首先感谢大家的帮助,本来打算是2018.1.1发出自己已经大更改,功能变化,但还是在自己测试中发现问题,请问下如下面的call代码,因为这值不是设置的值,所以反复重call自己,当达到设置的值
,当goto :eof,会反复call的返回的次数,可否不管如何反复call自己只要值得到设置的值,就返回第一次call的位置?谢谢
  1. @echo off
  2. call :a1
  3. pause
  4. echo.%p%
  5. pause

  6. :a1
  7. set /p p=请输入:
  8. if "%p%" neq "1" call :a1
  9. echo.%p%
  10. goto :eof
复制代码
发表于 2017-12-30 21:05:42 | 显示全部楼层
  1. if "%p%" neq "1" goto :a1
复制代码
 楼主| 发表于 2017-12-30 21:08:22 | 显示全部楼层
回复 2# ivor


    首先感谢,goto :a1,因为我用call可以传一些值,用call确实不行吗?
发表于 2017-12-30 21:21:58 | 显示全部楼层
回复 1# yunyan100

这样call次数够多会溢出,不过够你用了
 楼主| 发表于 2017-12-30 21:27:05 | 显示全部楼层
回复 4# zaqmlp


    就是想不管反复call自己多少次,最后达到值就返回原来call他的地方,而不是内部还反复返回次数才回到原来call它的地方
发表于 2017-12-30 21:40:06 | 显示全部楼层
回复 5# yunyan100

不能,就像俄罗斯套娃,需要一层层打开,不过实现你的功能不一定要你这样,论程序设计的重要性
发表于 2017-12-30 22:24:33 | 显示全部楼层


例行建议换个别的语言啦。
发表于 2017-12-31 09:47:37 | 显示全部楼层
call最大传参好像是494层,495层极为不稳定,每层-1,每层都是主层只要不退出当前层会一直执行下去,由于你的代码call失败传递超过最大限制层则二层主层被强行退出,
标准传递是goto:跳回
for过多的子层最好不要超过所有代码调用层和值494
 楼主| 发表于 2017-12-31 11:43:02 | 显示全部楼层
首先感谢各位,我也是来确认call能否不管重复多少次,可以退回原来call的地方,看了两位回复不行,我已经把那段被其他多地方的call的公共处理部分改掉了,现在没有了不管里面反复多次只要值符合就回到原来call这里的地方
 楼主| 发表于 2017-12-31 11:43:58 | 显示全部楼层
回复 7# codegay


    我从没去学过电脑方面的,知识都来源于网络,所以也就会点bat,其他的就不会了啦
发表于 2017-12-31 14:56:45 | 显示全部楼层
call你理解为函数,每次调用完call,保存其值,自己用,或者再返回给上层。

还有一种,使用全局变量,各层调用用goto :EOF结束,最后调用点使用全局变量即可。
  1. @echo off
  2. rem 使用全局变量p

  3. call :entry
  4. pause
  5. echo.%p%

  6. pause
  7. exit 0

  8. :entry
  9. rem 输入不正确,则循环调用get_input方法
  10. :LOOP
  11.   set p=0
  12.   call :get_input
  13.   if "%p%" neq "1" goto :LOOP
  14. :END_LOOP
  15. echo.%p%
  16. goto :EOF

  17. :get_input
  18. set /p p=请输入:
  19. goto :EOF
复制代码
 楼主| 发表于 2017-12-31 16:45:14 | 显示全部楼层
回复 11# slore

谢谢,已经改了,现在没那问题了我收藏以后看大改动时再看看
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-19 23:35 , Processed in 0.012309 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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