每个月都需要在SAP系统中填写timesheet,一般我都会拖到月末填写,但会忘记早前的很多天做了那些工作。于是我想编一个程序,每天下班前会定时提醒我记录当天的工作。
我不是学编程的,水平有限,所以使用VBS做了一个。
首先,确定软件功能:
1. 开机自动运行,不需要手动管理,这样才能起到“提醒”的作用。
2. 定时弹窗提醒站起来活动活动 -- 工作再忙也要注意身体:)
3. 每天下班前定时弹输入框,记录工作 -- 如果不写点啥,输入框不能被关闭。
来吧,说干就干,首先是VBS,取名为WorkLog.vbs
set WshShell = WScript.CreateObject("WScript.Shell")
For i=0 To 240 '计时循环,保证vbs后台运行。i为小时数,j为分钟,s为秒。超过240小时退出vbs
For j=0 To 59
For s=0 To 59
WScript.Sleep(1000)
hours=Hour(time)
minutes=Minute(time)
seconds=Second(time)
realtime= hours & minutes & seconds
If realtime=164545 Then Call worklog() '调用子函数每天16:45:45提醒记录工作
'If realtime=164545 Then msgbox(realtime) '测试用
'WshShell.Popup realtime, 1, "AutoClose MsgBox Simulation", vbInformation+vbOKOnly
If s=59 Then j=j+1
Next
'if j=45 then call standup()'调用子函数每45分钟提醒休息
If j=59 Then i=i+1
Next
Next
Sub worklog()
Currentdate1=date() '读取当天日期
Dim WorkContent
WorkContent=inputbox("输入今天的工作内容",Currentdate1,"今天的工作内容") '输入当天工作内容
do while WorkContent=Empty or WorkContent="今天的工作内容"
WorkContent=inputbox("输入今天的工作内容",Currentdate1,"今天的工作内容") '输入当天工作内容
loop
dim fso,f
set fso = CreateObject("Scripting.FileSystemObject")
if fso.FileExists("C:\MyWorkLog\MyWorkLog.txt") then
set f = fso.OpenTextFile("C:\MyWorkLog\MyWorkLog.txt", 8, false) '第二个参数 2 表示重写, 8 表示追加
f.Write(Currentdate1)
f.Write(":")
f.WriteLine(WorkContent)
f.Close()
set f = nothing
else
set f = fso.CreateTextFile("C:\MyWorkLog\MyWorkLog.txt", true) '第二个参数表示目标文件存在时是否覆盖
f.WriteLine("以下是工作内容记录:") '写标题
f.WriteBlankLines(1) '写入一个空白行(相当于在文本编辑器中按一次回车)
f.Write(Currentdate1)
f.Write(":")
f.WriteLine(WorkContent)
f.Close()
set f = nothing
end if
set fso = Nothing
End sub
Sub standup()
alerttitle = "定时提醒" '对话框标题
alerttext = vbnewline & vbnewline & "休息一下,活动一下胳膊,脖子,腰部。" & vbnewline & vbnewline & vbnewline & "生命在于运动"& vbnewline & vbnewline & vbNewLine '提醒内容,vbnewline为换行符
msgbox alerttext,4096,alerttitle
end sub
而要实现开机自动运行,只需要将程序放入路径:C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp中即可。同时考虑到vbs中使用了绝对路径C:\MyWorkLog,于是写了个批处理文件,创建路径,拷贝vbs到StartUp目录。
Install.bat
cd /d %~dp0
%1 start "" mshta vbscript:createobject("shell.application").shellexecute("""%~0""","::",,"runas",1)(window.close)&exit
@echo off
md c:\MyWorkLog
taskkill /f /t /im wscript.exe
TIMEOUT /T 5 /NOBREAK
xcopy WorkLog.VBS "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp" /y
TIMEOUT /T 5 /NOBREAK
start "" "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp\WorkLog.vbs"
两个文件放在一起,双击Install.bat即可。
如果你也需要这个功能,代码取走不谢。处女贴,欢迎打赏。