![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-09 19:45 |
共 47,811 主题排行 / 349,896 发帖 / 今日 1 篇 / 48,254 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 如何能够实现延迟扩展下的map lookup? |
| 可打印版本 907 / 5 |
| 第1楼 leson | 发表于 2008-09-22 20:21 |
| 初级用户 发帖 15 积分 35 | |
|
如何能够实现延迟扩展下的map lookup? 在一般情形下,可以walkaround实现map的键值查找。
但是如何在for循环中实现类似的查找呢?例如当前给出的不是一个键,而是一组键,然后要将它们所对应的值串起来后用。 如上尝试,结果不正确,应该是由于变量延迟扩展所引起的,导致每个迭代下的&rem.都不能立刻摔倒,最后list只能获取到第一个匹配值。 希望大家多多指点,谢谢。 |
|
| 第2楼 HAT | 发表于 2008-09-22 22:40 |
| 版主 发帖 5,017 积分 9,023 | |
|
这个是由批处理在进行预处理时符号的优先级决定的:
%%大于&大于!! 在未开启变量延迟扩展的时候,先进行变量替换,后处理&符号,所以你的这个方法行得通;开启变量延迟扩展以后,先处理&符号,后进行变量替换,所以你的这个方法就行不通了。 |
|
| 第3楼 leson | 发表于 2008-09-23 06:58 |
| 初级用户 发帖 15 积分 35 | |
|
这只是我看到过的一种思路,
请问一般大家都用什么方法实现map的lookup, 直接用set "days.mon=Monday"这种方式我是知道的, 还有其他方法吗? 谢谢。 |
|
| 第4楼 lxmxn | 发表于 2008-09-23 14:05 |
| 版主 发帖 4,938 积分 11,386 | |
| 第5楼 leson | 发表于 2008-09-23 20:13 |
| 初级用户 发帖 15 积分 35 | |
|
楼上的方法挺别致的,
以前我倒不知道;分隔的序列放在for ... in里面也可以遍历的, 而且map lookup,复杂度n^2倒也是可以接受的, 非常感谢。 按照我原来的思路,今天我还是实验出了如何walkaround那个!!、%%、&优先级问题。 方法是通过for转一下,用echo弄掉后面的&rem.,然后再执行直接值set, 想来自我感觉也不错,特分享下。 |
|
| 第6楼 leson | 发表于 2008-09-23 20:22 |
| 初级用户 发帖 15 积分 35 | |
|
顺便说下,我当初遭遇问题的原始需求是,动态生成带序号的目录列表,然后交互时,用户可以输入序号列表,来选择相应的待处理目录。
在始终无法使用&rem.替换方法来实现序号列表和目录列表的映射时, 当初我用到的是一种相对简单直观一点的方法,就是在创建dirs menu的for循环中, 每个迭代中set一个新变量出来, 映射时就相对简单些了, |
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |