![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-04 05:44 |
共 48,038 主题排行 / 350,123 发帖 / 今日 0 篇 / 48,251 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 请问如何取下个日期时间 |
| 可打印版本 2,179 / 20 |
| 第1楼 lililulula | 发表于 2007-04-07 06:25 |
| 中级用户 发帖 138 积分 302 | |
|
请问如何取下个日期时间 用date取时间日期,我现在想要取系统的下一个工作日日期,比如今天星期五20070406,我想取的就是下星期一20070409,如果是星期四20070405的话我要取的就是星期五20070406,不知道如何实现,希望大大们帮忙.
本人不知道如何让日期做算术运算,另外就是不知道如何判断星期的问题. |
|
| 第2楼 wudixin96 | 发表于 2007-04-07 11:12 |
| 银牌会员 发帖 931 积分 1,928 | |
|
试试这个? |
|
| 第3楼 wudixin96 | 发表于 2007-04-07 21:38 |
| 银牌会员 发帖 931 积分 1,928 | |
| 第4楼 flyinspace | 发表于 2007-04-08 06:10 |
| 银牌会员 发帖 517 积分 1,206 | |
|
没有通用代码..
xp和2000里的格式都不一样。 至于日期计算是算法问题。.和这里无关。 至于星期 %date%里面已经包含了。 |
|
| 第5楼 lililulula | 发表于 2007-04-08 13:58 |
| 中级用户 发帖 138 积分 302 | |
|
谢谢wudixin96朋友。2楼是vbs脚本好像可以用,3楼的脚本有问题,如果隔年份就会出问题了~~不知道能不能解决这个问题?或者vbs脚本的变量我怎么在bat脚本下取到,是否可以??
[ Last edited by lililulula on 2007-4-8 at 04:27 PM ] |
|
| 第6楼 lililulula | 发表于 2007-04-09 05:29 |
| 中级用户 发帖 138 积分 302 | |
|
自己先顶下 顺便把3楼的脚本消化下~~~
|
|
| 第7楼 flyinspace | 发表于 2007-04-09 07:52 |
| 银牌会员 发帖 517 积分 1,206 | |
|
这么写太麻烦了。。
可以利用系统自带的功能进行分析。。。 假设操作系统为windows xp。。 则以下脚本可以用。。(这里不进行错误判断,现场还原也不对时间判断,23:59:59秒使用时,会使日期返回错误。) @echo off set OldDate=%date% :reInput echo 请输入你要查询的日期。格式为:2007-04-05。 set /p input=^> echo %input% | date >nul if not errorlevel 1 ( echo 下一个工作日是: %date:~11,3% ) else ( goto :reInput ) echo %OldDate% | date >nul pause |
|
| 第8楼 flyinspace | 发表于 2007-04-09 07:55 |
| 银牌会员 发帖 517 积分 1,206 | |
|
哦。。这个脚本可以查询的日期为 XP 系统支持的任意日期。
如果不在特定时间点使用,则此脚本基本无错。 |
|
| 第9楼 flyinspace | 发表于 2007-04-09 08:05 |
| 银牌会员 发帖 517 积分 1,206 | |
|
我还,没有仔细看楼主的题目。其实也很简单。
我曾经发过关于任意日期运算的帖子,可以查询任意年月日(类似于万年历的)。 不过大家好象都不喜欢,我就把贴删掉了。 日期运算需要定义时间。。 |
|
| 第10楼 lililulula | 发表于 2007-04-10 00:01 |
| 中级用户 发帖 138 积分 302 | |
|
flyinspace朋友 你的7楼脚本只是查询输入日期当天是星期几,不过我还是要问下关于echo %input% | date >nul和echo %OldDate% | date >nul两句我有点不懂,后面的| date>nul是把取到的日期置空?但是我单单实验set /p input=:> echo %input% | date>nul输入的日期会修改成为当前系统日期,而脚本中echo %OldDate% | date >nul加上后系统日期便不会修改,具体含义不是很明白,希望flyinspace朋友能告诉我下.
而我的要求是取得系统日期后判断下一个工作日,然后取的日期,3楼的脚本在搁年会出错,不知道有社么办法可以解决. |
|
| 第11楼 lililulula | 发表于 2007-04-10 01:23 |
| 中级用户 发帖 138 积分 302 | |
|
问题我已经解决,2楼告诉了我怎么做日期算术运算,我从中得到启发,由于2楼的思考方法在脚本运行的时候如果跨年就会出错,所以我直接判断星期字符,就避免了这个问题,脚本如下(2000下):
@echo off set day=%date:~-10,4%%date:~-5,2%%date:~-2,2% set date=%date:~-14,3% if %date%==星期一 set /a nextworkday=%day%+1&goto workday if %date%==星期二 set /a nextworkday=%day%+1&goto workday if %date%==星期三 set /a nextworkday=%day%+1&goto workday if %date%==星期四 set /a nextworkday=%day%+1&goto workday if %date%==星期五 set /a nextworkday=%day%+3&goto workday if %date%==星期六 set /a nextworkday=%day%+2&goto workday if %date%==星期日 set /a nextworkday=%day%+1&goto workday :workday echo 下一个工作日是:%nextworkday% pause 还有一个问题就是为什么多重设置date的时候变量名要是date才有效?比如 set date=%date:~0,10% set date=%date:-=% date变量为今天日期20070409 而如果这样却无效 set day=%date:~0,10% set day=%date:-=% date日期为2007-04-09,第二句set无效 延迟变量开启也没有帮助 [ Last edited by lililulula on 2007-4-9 at 12:36 PM ] |
|
| 第12楼 flyinspace | 发表于 2007-04-10 02:06 |
| 银牌会员 发帖 517 积分 1,206 | |
|
你的系统是windows 2000。。
使用我的脚本时应该会有错误提示:没有操作数。 set date=%date:~-14,3% 另外,最好不要定义已有的环境变量。 隔年出错是因为没有对年份进行判断。(有闰年、平年的区别)而且每年的第一个星期都会有偏差。。。 还有,我怎么看,这个脚本都应该有问题的。。 即使在2007年内,也肯定有几天会出现错误。 时间判断不够严密。 |
|
| 第13楼 lililulula | 发表于 2007-04-10 02:26 |
| 中级用户 发帖 138 积分 302 | |
|
flyinspace朋友你说的2楼脚本确实有问题,我按照星期判断的话,取当天星期,字符串比较,我想应该不会有问题了,因为我取的就是系统后面的星期,然后判断的话,情况也就7种啊~~~~另外你说不要定义已有的黄鲸变量是什么意思??不是很明白
[ Last edited by lililulula on 2007-4-9 at 01:28 PM ] |
|
| 第14楼 flyinspace | 发表于 2007-04-10 03:08 |
| 银牌会员 发帖 517 积分 1,206 | |
|
建议你把批处理的教程先看一遍。
你的问题我给你指出吧。 假设 2007年4月30日。 则怎么判断? |
|
| 第15楼 lililulula | 发表于 2007-04-10 03:59 |
| 中级用户 发帖 138 积分 302 | |
|
你一说倒真是这样,我后来也看了2楼的脚本也有着个问题,我的脚本也有这个问题,不过3楼的vbs脚本没问题,有wekekday这个自带参数~~~~,看来考虑问题没考虑全面,谢谢楼上提醒,我想知道有办法解决这个问题吗?或是vbs最后的&CDate(today),bat脚本要取这个变量值该怎么取???
|
|
| 1 2 下一页 |
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |