中国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 楼』:  



  Quote:
结果今天发现,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
查看资料  发短消息 网志   编辑帖子  回复  引用回复

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


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



论坛跳转: