0、序文

最近目标跟我抱怨,因为公司每天都断电,笔记本电池又有点老化,即便休眠也撑不过一晚上,每天去都要重新开机开软件开文档,几乎烦死了,所以希望一开机就能:

  1. 主动翻开常用的几款软件
  2. 主动发送每日待办清单到邮箱
  3. 弹窗显现一条读书笔记

这么些小要求,当然是要满足TA啦~

1、需求剖析

首先,接到需求的第一步,便是剖析需求。

需求点1和2都很好办,用bat脚本就能做到;需求点3,我想的是弹出图片,用py脚本就可以简略完成,最终在bat里调用py脚本。

话不多说,直接开撸。

2、代码完成

2.1 主动翻开常用的几款软件

2.2.1 windows开机启动目录

只需两步,快速找到开机启动目录:

① 快捷键win+R,翻开运转窗口;

② 输入shell:startup快速找到开机启动目录。

高效能人士必备:windows开机自启动任务

当电脑开机之后,就会主动履行这个目录下的内容,假如是bat文件,体系会主动履行,假如是文件夹或其他文件,则体系会主动调用相关程序翻开。

因而,假如是想主动翻开某些软件,可以将其快捷方法粘贴到这个目录下,或许用bat脚本翻开:

@REM startTask.bat
tasklist|find /i "程序称号.exe" && echo started || start "" "D:\software\程序称号.exe"

这儿需求留意的是,bat脚本最好用notepad++翻开,将编码格局设为ANSI,否则,当途径中包括中文时可能会报错

2.2.2 主动发送每日待办清单到邮箱

目标会在每周开始前,将一周的待办事项,以日期命名方法的txt,存放在{ 每日待办清单 }的文件夹下。

高效能人士必备:windows开机自启动任务
因而,我只需求把txt文件中的内容读出来,发送到邮件正文即可。目标的手机设置了邮件提醒,开机后就会收到清单邮件,达到事项提醒的效果。

bat进行邮箱装备:

@REM mail.bat
blat -install smtp.qq.com xxx@qq.com
set yy=%date:~0,4%
set mm=%date:~5,2%
set dd=%date:~8,2%
if exist "E:\每日待办清单\%yy%.%mm%.%dd%.txt" (
    echo "文件存在">>"C:\Users\AppData\Roaming\Microsoft\Windows\myBats\blat.log"
) else (
    echo "文件不存在">>"C:\Users\AppData\Roaming\Microsoft\Windows\myBats\blat.log"
	echo "正在为您创立该文件...">>"C:\Users\AppData\Roaming\Microsoft\Windows\myBats\blat.log"
	echo %yy%-%mm%-%dd%>>"E:\每日待办清单\%yy%.%mm%.%dd%.txt" 
	echo "创立成功">>"C:\Users\AppData\Roaming\Microsoft\Windows\myBats\blat.log"
	type "C:\Users\AppData\Roaming\Microsoft\Windows\myBats\mail.txt">>"E:\每日待办清单\%yy%.%mm%.%dd%.txt" 
) 
blat "E:\每日待办清单\%yy%.%mm%.%dd%.txt" -to yyy@qq.com -u xxx@qq.com -pw QQ邮箱的授权码(留意不是密码)-subject 邮件标题 -debug -log "C:\Users\AppData\Roaming\Microsoft\Windows\blat.log(日志文件途径)" -timestamp

这儿需求留意,xxx@qq.com指发送的邮箱,yyy@qq.com指接收的邮箱;我这儿用的是QQ邮箱,-pw用的是授权码,而不是密码。授权码生成可在邮箱账号设置中找到,这儿不过多赘述。

同时留意代码中各文件的途径设置。

中心if exist这段是用于判别txt文件是否存在,假如不存在,则创立对应的xtxt文件,而且将模板mail.txt中的惯例事项复制到新创立的txt文件中。

保存代码为mail.bat文件,此刻可以双击它,验证下是否成功发送邮件。 假如发送失败,可在blat.log中找到犯错原因。 有些电脑没有装备blat,需求先到官网上下载解压,把解压后的4个文件存放到C:\Windows\System32中。

高效能人士必备:windows开机自启动任务
startTask.bat中调用mail.bat

call "C:\Users\AppData\Roaming\Microsoft\Windows\myBats\mail.bat"

双击运转startTask.bat,若运转成功,则可收到邮件。

这儿的mail.bat文件同样要留意中文的问题,记得编码格局改为ANSI

2.2.3 弹窗显现一条读书笔记

将目标平时写的读书笔记整合到一个txt文件中,命名为book.txt,这儿一行便是一条笔记。

高效能人士必备:windows开机自启动任务
这儿用pygame来将文字转为图片,bookTip2Pic.py代码如下:

#载入必要的模块
import pygame
import time
import random
import linecache
import re
import cv2
date_time=time.strftime("%Y%m%d_%H%M%S", time.localtime())
# 随机选取第rdl条笔记
count=-1
for count, line in enumerate(open(r"E:\读书笔记txt版别\book.txt",'rb')):
	count+=1
rdl=random.randint(1, count)
print(rdl)
text = linecache.getline("E:/读书笔记txt版别/book.txt", rdl)
# pygame初始化
pygame.init()
screen = pygame.display.set_mode((1024, 720), pygame.RESIZABLE)
# 待转换文字,先去除尾部的回车符
utext = text.replace('\n', '') 
# 15个字为一行,以便多行展示
utext = re.sub(r"(.{15})", "\\1\r\n", utext)
print(text)
#设置字体
font = pygame.font.SysFont('microsoft yahei', 38)
lines = utext.splitlines()
for i, l in enumerate(lines):
    screen.blit(font.render(l, 0, (65, 83, 130),(255,255,255)), (10, 50 + 64*i))
#烘托图片
ftext = font.render(utext, 1, (65, 83, 130),(255, 255, 255))
#保存图片
path='E:\\bookPics\\'+date_time+'.jpg'
# 保存图片
pygame.image.save(screen, path)
pygame.quit()
# 翻开图片
imgshow=cv2.imread(path)
cv2.imshow("imgshow", imgshow)
cv2.waitKey(0)
cv2.destroyAllWindows()

cmd运转python bookTip2Pic.py,可看到弹出图片:

高效能人士必备:windows开机自启动任务
这儿样式比较简陋,有时间可以再调调参数美化一下。

最终一步便是在startTask.bat中调用py:

python "C:\Users\AppData\Roaming\Microsoft\Windows\myBats\bookTip2Pic.py"

再次提醒:startTask.bat必须放在2.2.1中提到的开机启动目录下。

3、结语

至此,3个小要求已基本完成,只需求重启验证一下就好啦。

当然,写脚本的同时,我还给目标买了新的笔记本电脑,从根源上解决了问题~