中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-12 05:28
47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,256 会员排行
DOS批处理 & 脚本技术(批处理室) » [已结]有关变量延迟及组合显示变量(变量套嵌)的问题
可打印版本  1,041 / 8
第1楼 exzzz 发表于 2008-12-24 13:13
初级用户 发帖 167 积分 194
[已结]有关变量延迟及组合显示变量(变量套嵌)的问题
我在写一个批处理“查询ID.bat”的时候,脚本部分内容如下:



我输入 dl 后,希望得到的输出结果是:

但是现在得不到这个结果。在批处理中加上set可以看到系统生成了几个变量

我想请问下怎么样才能把这几个变量echo出来?我估计我错在【echo 编号:%tingid%%i%% 】这里了
我实在不知道如何组合显示这些变量,请协助,谢谢!

[ Last edited by exzzz on 2008-12-24 at 16:46 ]
第2楼 HAT 发表于 2008-12-24 13:15
版主 发帖 5,017 积分 9,023
本版搜索“变量嵌套”
第3楼 exzzz 发表于 2008-12-24 13:16
初级用户 发帖 167 积分 194
OK,刚才没有想到这个关键词,呵呵,再去看看,稍后解决了我回来结帖
第4楼 exzzz 发表于 2008-12-24 16:42
初级用户 发帖 167 积分 194
已经搞定,固定字符为 tingid ,要显示变量 tingid1到tingid4,则可以这样表示

for /l %%i in (1,1,4) echo !tingid%%i!




第一次修改:
跳过了标签 :data 之前的数据,避免了findstr查询类似 a 这样在很多地方都有的数据导致产生的无效变量。

第二次修改:
增加了输入判断,第一次判断输入的服务厅缩写是否为空或h,如果是空则跳回开头,h跳到帮助。
第二个判断,是列出满足查询条件的厅列表后,判断输入的编号是否数字,以及数字范围是否超过1~%n%的范围,如果不满足条件,要求重新输入

[ Last edited by exzzz on 2008-12-24 at 19:08 ]
第5楼 exzzz 发表于 2008-12-24 17:25
初级用户 发帖 167 积分 194
另外有个缺陷,我不知道如何使用 findstr命令,从指定的行开始查询数据,
现在已经可以得到data开始的行数是56,但是不知道findstr怎么设置从56行开始查询数据。
因为如果你输入a,那么findstr会在56行之前的很多地方都发现a这个字符并设置变量,产生很多无用数据,请指教一下。
findstr /?里的帮助:
一般表达式的快速参考:
. 通配符: 任何字符
* 重复: 以前字符或类别出现零或零以上次数
^ 行位置: 行的开始
$ 行位置: 行的终点
实在是看不懂。试过加上 ^56 ^:56 ^"56" 都无效。

搜索google和baidu ”findstr 指定 行“无果,请哪位指点一下?

[ Last edited by exzzz on 2008-12-24 at 17:27 ]
第6楼 HAT 发表于 2008-12-24 18:20
版主 发帖 5,017 积分 9,023
Re 5楼
用 for skip=55 跳过前面的55行行么?
第7楼 exzzz 发表于 2008-12-24 18:24
初级用户 发帖 167 积分 194
呵呵,skip可以的,不过想探索一下findstr有无可能。

不过还是修改了一下脚本,现在可以跳过前面的数据了,不过临时产生了一个data.dat,不过马上就删除了。

[ Last edited by exzzz on 2008-12-24 at 18:36 ]
第8楼 HAT 发表于 2008-12-24 18:26
版主 发帖 5,017 积分 9,023
Re 7楼
findstr没有这样的功能,^用在正则表达式里面,表示以指定内容开头的行。
第9楼 gool123456 发表于 2010-05-27 17:19
初级用户 发帖 76 积分 89
Originally posted by HAT at 2008-12-24 13:15:
本版搜索“变量嵌套”


还不会,先搜搜~
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023