中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [求助]如何声明并替换多个变量?
作者:
标题: [求助]如何声明并替换多个变量? 上一主题 | 下一主题
flybird2020
初级用户





积分 103
发帖 52
注册 2007-4-13
状态 离线
『楼 主』:  [求助]如何声明并替换多个变量?

EXCEL原件内容:

6:44	节目一	6:50	节目二	8:00	节目三	12:00	节目四	15:25	节目五	16:29	节目六
6:30	节目一	7:00	节目二	8:02	节目三	8:35	节目四	9:00	节目五	9:44	节目六
6:05	节目一	6:30	节目二	7:00	节目三	7:30	节目四	8:01	节目五	8:17	节目六
6:56	节目一	7:00	节目二	7:10	节目三	7:25	节目四	7:55	节目五	8:35	节目六
6:06	节目一	6:37	节目二	7:00	节目三	7:34	节目四	8:05	节目五	9:09	节目六
6:56	节目一	7:00	节目二	7:18	节目三	7:58	节目四	11:40	节目五	12:41	节目六
6:00	节目一	6:20	节目二	6:54	节目三	7:53	节目四	11:17	节目五	11:57	节目六
7:30	节目一	12:55	节目二	19:35	节目三	23:35	节目四				
7:10	节目一	7:30	节目二	12:30	节目三	12:55	节目四	13:05	节目五	15:55	节目六
6:14	节目一	6:30	节目二	8:20	节目三	11:40	节目四	12:00	节目五	15:38	节目六
7:00	节目一	11:11	节目二	12:00	节目三	12:30	节目四	16:33	节目五	17:30	节目六
6:30	节目一	7:00	节目二	7:20	节目三	8:00	节目四	12:30	节目五	12:35	节目六
6:15	节目一	7:00	节目二	7:30	节目三	11:50	节目四	12:15	节目五	12:35	节目六
6:45	节目一	7:05	节目二	7:35	节目三	8:25	节目四	11:30	节目五	17:45	节目六
6:00	节目一	6:32	节目二	6:45	节目三	7:00	节目四	7:22	节目五	7:32	节目六
6:00	节目一	6:30	节目二	7:30	节目三	7:51	节目四	8:00	节目五	11:50	节目六
7:00	节目一	7:50	节目二	9:00	节目三	9:15	节目四	10:15	节目五	10:55	节目六
7:30	节目一	7:50	节目二	12:00	节目三	12:30	节目四	13:10	节目五	18:00	节目六
昨天我提的如何计算时间差,我自己以为可以解决 通过EXCEL函数:“(HOUR(I2-F2)*60+MINUTE(I2-F2))” 结果今天发现,BAT中声明的变量有数量限制的 而我的节目表中一行中数据最少也应该有150+个 这要如何声明变量呢? 目前我可能只能做到把EXCEL分成几部分,一次执行N列(N<31),再复制到EXCEL中,等于是一个EXCEL表我要分最少五次来执行BAT 我的低级BAT内容如下:
if exist letter_End.txt del letter_End.txt /f/q
setlocal EnableDelayedExpansion
for /f "tokens=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31 delims=	" %%a in (letter.txt) do (
echo %%a	%%c	%%d	=^(HOUR^(F%%a-C%%a^)*60+MINUTE^(F%%a-C%%a^)^)	%%e	%%f	=^(HOUR^(I%%a-F%%a^)*60+MINUTE^(I%%a-F%%a^)^)	%%g	%%h	=^(HOUR^(L%%a-I%%a^)*60+MINUTE^(L%%a-I%%a^)^)	%%i	%%j	=^(HOUR^(O%%a-L%%a^)*60+MINUTE^(O%%a-L%%a^)^)	%%k	%%l	=^(HOUR^(R%%a-O%%a^)*60+MINUTE^(R%%a-O%%a^)^)	%%m	%%n	=^(HOUR^(U%%a-R%%a^)*60+MINUTE^(U%%a-R%%a^)^)	%%o	%%p	=^(HOUR^(X%%a-U%%a^)*60+MINUTE^(X%%a-U%%a^)^)	%%q	%%r	=^(HOUR^(AA%%a-X%%a^)*60+MINUTE^(AA%%a-X%%a^)^)	%%s	%%t	=^(HOUR^(AD%%a-AA%%a^)*60+MINUTE^(AD%%a-AA%%a^)^)	%%u	%%v	=^(HOUR^(AG%%a-AD%%a^)*60+MINUTE^(AG%%a-AD%%a^)^)	%%w	%%x	=^(HOUR^(AJ%%a-AG%%a^)*60+MINUTE^(AJ%%a-AG%%a^)^)	%%y	%%z	=^(HOUR^(AM%%a-AJ%%a^)*60+MINUTE^(AM%%a-AJ%%a^)^)>>letter_End.txt
)
离我的目标差了好远,我希望达到如下效果:
6:44	节目一	节目二减节目一的时间差	6:50	节目二	节目三减节目二的时间差	8:00	节目三	节目四减节目三的时间差	12:00	节目四	节目五减节目四的时间差	15:25	节目五	节目六减节目五的时间差	16:29	节目六
6:30	节目一	节目二减节目一的时间差	7:00	节目二	节目三减节目二的时间差	8:02	节目三	节目四减节目三的时间差	8:35	节目四	节目五减节目四的时间差	9:00	节目五	节目六减节目五的时间差	9:44	节目六
6:05	节目一	节目二减节目一的时间差	6:30	节目二	节目三减节目二的时间差	7:00	节目三	节目四减节目三的时间差	7:30	节目四	节目五减节目四的时间差	8:01	节目五	节目六减节目五的时间差	8:17	节目六
6:56	节目一	节目二减节目一的时间差	7:00	节目二	节目三减节目二的时间差	7:10	节目三	节目四减节目三的时间差	7:25	节目四	节目五减节目四的时间差	7:55	节目五	节目六减节目五的时间差	8:35	节目六
6:06	节目一	节目二减节目一的时间差	6:37	节目二	节目三减节目二的时间差	7:00	节目三	节目四减节目三的时间差	7:34	节目四	节目五减节目四的时间差	8:05	节目五	节目六减节目五的时间差	9:09	节目六
6:56	节目一	节目二减节目一的时间差	7:00	节目二	节目三减节目二的时间差	7:18	节目三	节目四减节目三的时间差	7:58	节目四	节目五减节目四的时间差	11:40	节目五	节目六减节目五的时间差	12:41	节目六
6:00	节目一	节目二减节目一的时间差	6:20	节目二	节目三减节目二的时间差	6:54	节目三	节目四减节目三的时间差	7:53	节目四	节目五减节目四的时间差	11:17	节目五	节目六减节目五的时间差	11:57	节目六
7:30	节目一	节目二减节目一的时间差	12:55	节目二	节目三减节目二的时间差	19:35	节目三	节目四减节目三的时间差	23:35	节目四	无节目五,数据为空			无节目六,数据为空		
7:10	节目一	节目二减节目一的时间差	7:30	节目二	节目三减节目二的时间差	12:30	节目三	节目四减节目三的时间差	12:55	节目四	节目五减节目四的时间差	13:05	节目五	节目六减节目五的时间差	15:55	节目六
6:14	节目一	节目二减节目一的时间差	6:30	节目二	节目三减节目二的时间差	8:20	节目三	节目四减节目三的时间差	11:40	节目四	节目五减节目四的时间差	12:00	节目五	节目六减节目五的时间差	15:38	节目六
7:00	节目一	节目二减节目一的时间差	11:11	节目二	节目三减节目二的时间差	12:00	节目三	节目四减节目三的时间差	12:30	节目四	节目五减节目四的时间差	16:33	节目五	节目六减节目五的时间差	17:30	节目六
6:30	节目一	节目二减节目一的时间差	7:00	节目二	节目三减节目二的时间差	7:20	节目三	节目四减节目三的时间差	8:00	节目四	节目五减节目四的时间差	12:30	节目五	节目六减节目五的时间差	12:35	节目六
6:15	节目一	节目二减节目一的时间差	7:00	节目二	节目三减节目二的时间差	7:30	节目三	节目四减节目三的时间差	11:50	节目四	节目五减节目四的时间差	12:15	节目五	节目六减节目五的时间差	12:35	节目六
6:45	节目一	节目二减节目一的时间差	7:05	节目二	节目三减节目二的时间差	7:35	节目三	节目四减节目三的时间差	8:25	节目四	节目五减节目四的时间差	11:30	节目五	节目六减节目五的时间差	17:45	节目六
6:00	节目一	节目二减节目一的时间差	6:32	节目二	节目三减节目二的时间差	6:45	节目三	节目四减节目三的时间差	7:00	节目四	节目五减节目四的时间差	7:22	节目五	节目六减节目五的时间差	7:32	节目六
6:00	节目一	节目二减节目一的时间差	6:30	节目二	节目三减节目二的时间差	7:30	节目三	节目四减节目三的时间差	7:51	节目四	节目五减节目四的时间差	8:00	节目五	节目六减节目五的时间差	11:50	节目六
7:00	节目一	节目二减节目一的时间差	7:50	节目二	节目三减节目二的时间差	9:00	节目三	节目四减节目三的时间差	9:15	节目四	节目五减节目四的时间差	10:15	节目五	节目六减节目五的时间差	10:55	节目六
7:30	节目一	节目二减节目一的时间差	7:50	节目二	节目三减节目二的时间差	12:00	节目三	节目四减节目三的时间差	12:30	节目四	节目五减节目四的时间差	13:10	节目五	节目六减节目五的时间差	18:00	节目六
不局限于EXCEL操作,我第一步就是把EXCEL手动复制到TXT文件中以便我用BAT操作 由于数据非常庞大(EXCEL原件内容中只是节选的小小小一部分。。。),我BAT基础如此之烂也不得不寻求这方面的解决方法 希望大大们不吝赐教,感激不尽 [ Last edited by flybird2020 on 2008-7-23 at 05:22 PM ]


2008-7-23 17:20
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
bat-zw
金牌会员

永远的学习者


积分 3105
发帖 1276
注册 2008-3-8
状态 离线
『第 2 楼』:  

看了楼主的帖子,我晕了。。。 楼主把我发在你上个贴子的代码改一下就可以了啊,还要再次发贴,所以晕。 [ Last edited by zw19750516 on 2008-7-23 at 05:33 PM ]




批处理之家新域名:www.bathome.net
2008-7-23 17:26
查看资料  发送邮件  发短消息 网志  OICQ (841615149)  编辑帖子  回复  引用回复
yishanju
银牌会员

[b]看你妹啊[/b]


积分 1488
发帖 1357
注册 2006-5-20
状态 离线
『第 3 楼』:  

要疯了




有问题请发论坛或者自行搜索,再短消息问我的统统是SB
2008-7-23 17:30
查看资料  发短消息 网志   编辑帖子  回复  引用回复
yishanju
银牌会员

[b]看你妹啊[/b]


积分 1488
发帖 1357
注册 2006-5-20
状态 离线
『第 4 楼』:  

建议楼主用OFFICE 里的VBA 来实现 虽然说你需要花时间去学




有问题请发论坛或者自行搜索,再短消息问我的统统是SB
2008-7-23 17:32
查看资料  发短消息 网志   编辑帖子  回复  引用回复
bat-zw
金牌会员

永远的学习者


积分 3105
发帖 1276
注册 2008-3-8
状态 离线
『第 5 楼』:  

结果今天发现,BAT中声明的变量有数量限制的
我是没发现这个现象,就是有这个限制,估计楼主这个文本也难达到。 不信楼主可以试下这个:
@echo off
for /l %%i in (1,1,100000) do set "_%%i=%%i"
echo %_100000%&pause>nul
定义10万个变量,然后显示第100000个变量的值。 [ Last edited by zw19750516 on 2008-7-23 at 06:03 PM ]




批处理之家新域名:www.bathome.net
2008-7-23 17:56
查看资料  发送邮件  发短消息 网志  OICQ (841615149)  编辑帖子  回复  引用回复
slore
铂金会员





积分 5212
发帖 2478
注册 2007-2-8
状态 离线
『第 6 楼』:  

还是建议用EXCEL自己带的函数……你看看有没有dateiff




S smile 微笑,L love 爱,O optimism 乐观,R relax 放松,E enthusiasm 热情...Slore
2008-7-23 18:18
查看资料  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: