无忧启动论坛

标题: 一段情要埋藏多少年,一段代码要难为我多少天---批处理通过变量递减作为循环条件 [打印本页]

作者: likeyouli    时间: 2024-2-24 23:18
标题: 一段情要埋藏多少年,一段代码要难为我多少天---批处理通过变量递减作为循环条件
本帖最后由 likeyouli 于 2024-2-24 23:21 编辑
  1. @echo OFF
  2. SET B="1245.5545.4784264-54}55.6>5?4$5(8*9"
  3. :LOOP
  4. SET D=%B:~-1,1%
  5. SET B=%B:~0,-1%
  6. echo %D%
  7. pause
  8. GOTO LOOP
复制代码
咋看这段代码,没看到循环条件,经过测试才发现,原来是变量b循环重新赋值,使变量D逐个接收字符串"1245.5545.4784264-54}55.6>5?4$5(8*9"里每一个元素,高!
  代码原创@chinanet,来自帖子http://bbs.wuyou.net/forum.php?mod=viewthread&tid=409719&page=1 17楼,2018年的帖子,我才看明白~~~

作者: nathan6498    时间: 2024-2-25 00:02
谢谢分享
作者: yyz2191958    时间: 2024-2-25 07:27
谢谢分享
作者: tanglf    时间: 2024-2-25 08:57
分享经验谢谢
作者: rbwrbw    时间: 2024-2-25 09:45
vb
作者: yc2428    时间: 2024-2-25 09:58
分享经验谢谢
作者: Climbing    时间: 2024-2-25 10:21
本帖最后由 Climbing 于 2024-2-25 10:23 编辑

变量D逐个接收字符跟循环条件也没有任何关系啊?在我看来,这就是一个死循环啊。
你初学批处理,不要将太多精力放到这种类似抖机灵的技巧上,你把For命令学扎实了,基本上就差不多了。

作者: wang1126    时间: 2024-2-25 10:41
谢谢分享经验
作者: zlq_hysy    时间: 2024-2-25 11:04

谢谢分享经验
作者: guong    时间: 2024-2-25 11:23
谢谢分享经验
作者: likeyouli    时间: 2024-2-25 11:46
本帖最后由 likeyouli 于 2024-2-25 12:01 编辑
Climbing 发表于 2024-2-25 10:21
变量D逐个接收字符跟循环条件也没有任何关系啊?在我看来,这就是一个死循环啊。
你初学批处理,不要将太 ...

肯定死循环啊,因为没写退出条件,假如我写提出的字符串为.或为其他符号的时候goto到哪里不就行了。  可能你没理解我表达的意思,刚看到这个循环的时候,以为变量D不会有任何变化,因为后边的-1,1没有变,没想到这个循环是因待提取的字符串B变化导致D变化的。  我的这两次提问,都是因为这小细节小机灵不熟导致的,如果明确报什么错误,我反倒好应付。
作者: szwp    时间: 2024-2-25 12:06
没报错是回车打得不够
作者: bsfqoo    时间: 2024-2-25 12:12
随便看看
作者: likeyouli    时间: 2024-2-25 12:21
szwp 发表于 2024-2-25 12:06
没报错是回车打得不够

我知道,,到最后肯定提不出字符就会报错了。还有提取到>这个符号的时候也会报错,这个符号与重定向符雷同,,但这都不是我想表达的意思,我想表达的是变量后边的:~-1,1,0,-1没变的情况下,会触发循环的变量变化,主要原因:一是我对0,-1参数不熟,二是我对这种通过待提取字符串循环变化而导致循环的思路不熟,没大写过这种方式循环,以往都是用n+=1这种通过计数的方式循环。
作者: szwp    时间: 2024-2-25 17:32
将第一行删了,就能观察到变化了




欢迎光临 无忧启动论坛 (http://bbs.wuyou.net/) Powered by Discuz! X3.3