![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-10-01 05:58 |
共 47,813 主题排行 / 349,918 发帖 / 今日 0 篇 / 48,279 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 不用变量延迟[setlocal enableDelayedExpansion]也可以计算 |
| 可打印版本 5,407 / 49 |
| 第16楼 PPdos | 发表于 2008-06-25 21:15 |
| 高级用户 发帖 268 积分 783 | |
Originally posted by qzwqzw at 2008-6-25 02:09 PM: 如果缩成一行写呢? |
|
| 第17楼 qzwqzw | 发表于 2008-06-25 21:20 |
| 银牌会员 发帖 636 积分 2,343 | |
|
很无味的想法
代码追求简洁明快 而非简短古怪 |
|
| 第18楼 metoo | 发表于 2008-06-25 21:20 |
| 初级用户 发帖 93 积分 195 | |
Originally posted by qzwqzw at 2008-6-25 09:09 PM: 兄貌似对什么叫延迟变量了解不够透彻,同样是for循环结束后变量自然是生效的 应用上面的一个例子不用set/a 可以看到最后变量%ww%是会被赋予最后的值的 |
|
| 第19楼 PPdos | 发表于 2008-06-25 21:30 |
| 高级用户 发帖 268 积分 783 | |
很无味的想法 那无奈何老大的签名岂不是让你说的一文不值拉。。。。 [ Last edited by PPdos on 2008-6-25 at 02:32 PM ] |
|
| 第20楼 metoo | 发表于 2008-06-25 21:30 |
| 初级用户 发帖 93 积分 195 | |
Originally posted by qzwqzw at 2008-6-25 09:15 PM: 确实。。是可以用这个格式。。 某些代码我也欠考虑了,很高兴这论坛能有这样的气氛^ ^ |
|
| 第21楼 qzwqzw | 发表于 2008-06-25 21:31 |
| 银牌会员 发帖 636 积分 2,343 | |
|
metoo老兄可能是引用错了吧
我是在15楼反驳你的言论的 13楼的说法我是在证明楼主代码的多余 貌似没有什么问题 首先变量延迟我是了解的 “延迟变量”倒是第一次看见 兄在18楼的例子想说明什么问题? 任何变量在被“连续赋值”后自然都应该是最后的生效啊? 这没有什么值得讨论的啊 [ Last edited by qzwqzw on 2008-6-25 at 11:11 PM ] |
|
| 第22楼 qzwqzw | 发表于 2008-06-25 21:45 |
| 银牌会员 发帖 636 积分 2,343 | |
|
无奈何的签名其里重于其表
其中透出的无奈与豁达 我是很欣赏的 如果没有点睛的那几句释名辞 我只会视作过眼云烟 可很多人都被那古怪的结构 和willsort的一篇释义帖 搞得在技术的迷宫里迷失了方向 反而失去了最应该值得珍视的内在 不要觉得在讨论技术的地方 就应该钻技术的牛角尖 毕竟技术的讨论和发展是不断推陈出新的 而心灵的感觉和人生的体验却往往是弥足珍贵的 |
|
| 第23楼 metoo | 发表于 2008-06-25 21:54 |
| 初级用户 发帖 93 积分 195 | |
|
其实楼主的言论是对的- -!
然后ppdos兄的简化其实是错误的,并不能代替延迟变量,而是简单的连续赋值后的最后产物,然后我就他那个作了些解释 - -! 其实 变量延迟/延迟变量 不管叫啥吧(当然99%是我叫错了。。死鸭子也得嘴硬一下) 他存在的目的就是得到for循环内的set获得的变量变化的各个步骤然后加以处理, 当在for 应用中使用set的话是必须 变量延迟/延迟变量 的 而用call是将set至于循环命令的外圈执行,是一个不断调用子过程来达到类似 变量延迟/延迟变量 的效果 还有 无奈何的 那个签名并不是 连续赋值 注意 set/p 这个参数是个交互命令,这个地方可能是这个签名最精髓的地方 [ Last edited by metoo on 2008-6-25 at 09:56 PM ] |
|
| 第24楼 PPdos | 发表于 2008-06-25 21:58 |
| 高级用户 发帖 268 积分 783 | |
|
大家都没说楼主说的错啊~~?
我只是觉得楼主 写的长了点给简化一下 是否错误 那还是仁者见仁 |
|
| 第25楼 wxcute | 发表于 2008-06-25 22:16 |
| 中级用户 发帖 211 积分 458 | |
|
没想到这么多人讨论。
就像第1页15楼qzwqzw说的,改成这样就能显示中间的了。 还有metoo也挺搞笑“嘴硬的死鸭子” [ Last edited by wxcute on 2008-6-25 at 10:25 PM ] |
|
| 第26楼 qzwqzw | 发表于 2008-06-25 22:21 |
| 银牌会员 发帖 636 积分 2,343 | |
|
首先,楼主的言论肯定是对的
计算当然可以不用变量延迟(即使是在for中计算) 当然,这里的“计算”说得很模糊 导致各人有各人的理解 楼主这里的潜台词是可以用call来代替延迟 因为他的代码中出现了call 其次,楼主的代码也是没有问题的 语法正确无误且能达到想要的效果 我想表明的是 楼主的代码证明不了楼主观点中的潜台词 因为我用非call且非延迟的方式也能实现同样的目的 那就无法结实call可以代替延迟的意义 -------------------------------------------------------- 从ppdos的第一回帖来看 是了解我在14楼提到的set /a的缺省延迟效果的 只不过没把它当成一个问题与楼主的言论联系起来而已 简化本身没有问题 我也只是认为缩成一行代码略显多余 也能从中找到证明call能代替延迟的观点的佐证 (for /f %i in ('dir /b') do set /a n+=1 >nul)&call echo 目录下有%n%个文件(夹) 可以代替 (for /f %i in ('dir /b') do set /a n+=1 >nul)&echo 目录下有!n!个文件(夹) 这说明连接语句中遇到变量延迟问题可以用call替换 而metoo却往for里面去看 当然是看不到什么有价值的东西的 -------------------------------------------------------- 至于无奈何的签名 那真是又扯远了 我现在只记得那几句词 代码早忘得个干净 也不耐再去翻腾出来 且管它是不是连续赋值 [ Last edited by qzwqzw on 2008-6-25 at 10:28 PM ] |
|
| 第27楼 metoo | 发表于 2008-06-25 22:27 |
| 初级用户 发帖 93 积分 195 | |
|
作者的方法是对的。。但是那个简化版的是作不到代替延迟变量的。。这点错误我已经意识到了。。话说无奈何斑竹那个是特殊情况,不是连续赋予值。。用的set/p的交互方式。。。那个call也不是这种用法。。仿冒他的签名写了个p版的
按照楼上说法那我这个call call 是何种解释呢? [ Last edited by metoo on 2008-6-25 at 10:40 PM ] |
|
| 第28楼 wxcute | 发表于 2008-06-25 22:30 |
| 中级用户 发帖 211 积分 458 | |
|
其实我也菜鸟一个,没想得那么深。
只是习惯了用%,要用!代替%有点不适应,还有就是写“setlocal enableDelayedExpansion”挺费事的。我记性不好,记了有段时间才记住。 |
|
| 第29楼 metoo | 发表于 2008-06-25 22:33 |
| 初级用户 发帖 93 积分 195 | |
Originally posted by wxcute at 2008-6-25 10:30 PM: 鄙人也是菜鸟一个,话说其实这东西我现在都记不住。。我在editplus里设置了一个快捷输入! |
|
| 第30楼 qzwqzw | 发表于 2008-06-25 22:38 |
| 银牌会员 发帖 636 积分 2,343 | |
|
人一多就显得有些乱了
再加上有几位喜欢编辑帖子的 看着看着就觉得思路连不上了 现在理顺一下 ppdos开始只是想简化楼主的代码 后来提出无奈何签名是反驳我“简短古怪不可取”的言论 metoo是想说明变量延迟的“连续赋值”意义并以此证明其不可替代 后来提到无奈何的签名没有用变量延迟是因为没有用“连续赋值” 我刚开始只是想说楼主的代码证明不了楼主的观点 现在我想延伸楼主的观点—— for+call可以替代for+延迟,无论何种情况下 欢迎大家举出例子反驳我的观点 顺便也是对自己编程思想和代码技巧的一次整理 |
|
| 上一页 1 2 3 4 下一页 |
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |