Board logo

标题: [求助]如何声明并替换多个变量? [打印本页]

作者: flybird2020     时间: 2008-7-23 17:20    标题: [求助]如何声明并替换多个变量?

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 ]

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

作者: yishanju     时间: 2008-7-23 17:30
要疯了

作者: yishanju     时间: 2008-7-23 17:32
建议楼主用OFFICE 里的VBA 来实现 虽然说你需要花时间去学

作者: bat-zw     时间: 2008-7-23 17:56
结果今天发现,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 ]

作者: slore     时间: 2008-7-23 18:18
还是建议用EXCEL自己带的函数……你看看有没有dateiff