大家好,我遇到麻烦事了,我需要作一个班表,是读取系统日期自动生成的。
我已经用批处理生成了一个和WIN系统日历一样的BAT,但我这个BAT他没有明确指明 当月日期和星期的关系。
他生成的表和WIN的一样,但我需要的班表,需要是竖向的日期
如下:
N年N月 | 上班时间一 |上班时间二 |上班时间三 | 上班时间四|
日期星期几 |名一 |名二 |名三 |名四 |
例:
2009年01月| 上班时间一 |上班时间二 |上班时间三 | 上班时间四|
01星期四 |名一 |名二 |名三 |名四 |
02星期五 |名二 |名三 |名四 |名一 |
03星期六 |名三 |名四 |名一 |名二 |
04星期日 |名四 |名一 |名二 |名三 |
。
。
。
。
31星期六 |名三 |名四 |名一 |名二 |
我要生成的是这样的表,直接读取机器的日期生成,方便查询
但我找到的是和WIN一样的日历,找不到日期和星期的关联。
请帮忙想一样,如何能把日期和星期关联在一起,按上边的格式打出
日期+星期,后边再打排班的名称
我改写成的日历表代码如下:
日 一 二 三 四 五 六
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
自动日历出来了,就是不会把他写成我需要的方式。。
班表有四个人,还要把日期和班表的某一个人的名称关联在一起。
我就是在这里想了半天,没办法实现了。。
请大家帮帮忙。
[ Last edited by HAT on 2009-2-3 at 05:39 ]
我已经用批处理生成了一个和WIN系统日历一样的BAT,但我这个BAT他没有明确指明 当月日期和星期的关系。
他生成的表和WIN的一样,但我需要的班表,需要是竖向的日期
如下:
N年N月 | 上班时间一 |上班时间二 |上班时间三 | 上班时间四|
日期星期几 |名一 |名二 |名三 |名四 |
例:
2009年01月| 上班时间一 |上班时间二 |上班时间三 | 上班时间四|
01星期四 |名一 |名二 |名三 |名四 |
02星期五 |名二 |名三 |名四 |名一 |
03星期六 |名三 |名四 |名一 |名二 |
04星期日 |名四 |名一 |名二 |名三 |
。
。
。
。
31星期六 |名三 |名四 |名一 |名二 |
我要生成的是这样的表,直接读取机器的日期生成,方便查询
但我找到的是和WIN一样的日历,找不到日期和星期的关联。
请帮忙想一样,如何能把日期和星期关联在一起,按上边的格式打出
日期+星期,后边再打排班的名称
我改写成的日历表代码如下:
日 一 二 三 四 五 六
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
@echo off
setlocal enabledelayedexpansion
:::::::::::定义s1~s12,为每个月的天数
for %%b in (31,28,31,30,31,30,31,31,30,31,30,31) do (
set /a y+=1
set s!y!=%%b
)
:::::::::::判断输入年份是否为闰年,更改2月的天数
set /a year=%DATE:~0,4%
set /a year_chk1=year%%400
set /a year_chk2=year%%4
set /a year_chk3=year%%100
if %year_chk1% equ 0 set s2=29
if %year_chk2% equ 0 if %year_chk3% neq 0 set s2=29
::::::::::输入月份,并计算当年的第一天到上月月底的天数
set /a m=%DATE:~5,2%
set n=%m%
set /a n-=1
for /l %%c in (1,1,%n%) do (
set /a day+=!s%%c!)
::::::::::判断这一年的第一天是星期几?再判断所要查询月份的第一天是星期几?
set /a yearflag=(%year%+(%year%-1)/4-(%year%-1)/100+(%year%-1)/400)%%7
if %m%==1 (set monthflag=%yearflag% ) else (set /a monthflag=%yearflag%+!day!%%7 )
if %monthflag% geq 7 (set /a monthflag-=7)
echo 日 一 二 三 四 五 六
:::::::::输入月份1号前的空日期
for /l %%d in (1,1,%monthflag%) do (
set /p= <nul)
:::::::::找出要换行的日期(第一个,后每7个一换),显示当月日期并换行
set /a cl=7-%monthflag%
for /l %%e in (1 1 !s%m%!) do (
if %%e lss 10 (set /p= %%e<nul) else (set /p= %%e<nul)
if %%e==!cl! (echo.&set /a cl+=7)
)
pause
自动日历出来了,就是不会把他写成我需要的方式。。
班表有四个人,还要把日期和班表的某一个人的名称关联在一起。
我就是在这里想了半天,没办法实现了。。
请大家帮帮忙。
[ Last edited by HAT on 2009-2-3 at 05:39 ]

