计划任务工具根据自己设定的具体时间,频率,命令等属性来规定所要执行的计划。

代码

# -*- coding: utf-8 -*-

"""
Module implementing App.
""" from PyQt4.QtGui import QMainWindow
from PyQt4.QtCore import pyqtSignature
import time,os
import QtUtil
import shutil
import time from v.Ui_App import Ui_MainWindow class App(QMainWindow, Ui_MainWindow):
"""
Class documentation goes here.
"""
def __init__(self, parent = None):
"""
Constructor
"""
QMainWindow.__init__(self, parent)
self.setupUi(self) # 创建'res/command'文件夹
if os.path.exists('res/command'):
pass
else:
os.mkdir('res/command') # self.startDate.textFromDateTime() @pyqtSignature("")
def on_run_btn_clicked(self):
"""
创建任务.
""" # 在查询栏显示的内容
cmd = self.taskRun.toPlainText()
# 构建'res/command/01.txt'文件
if not os.path.exists('res/command/01.txt'):
m = open('res/command/01.txt','w')
m.close()
p = str(self.modifier.text())
# 判断日期是否正确
if self.endDate.text() <= self.startDate.text():
QtUtil.showOkDialog(self, u'日期出错', u'结束日期要大于开始日期') elif not p.isdigit():
QtUtil.showOkDialog(self, u'频率出错', u'运行频率必须为整数') else:
# 如果任务条件不完整,则创建失败
if self.taskName.text()=='' or self.modifier.text()=='' or cmd=='':
QtUtil.showOkDialog(self, u'创建失败', u'任务内容缺失')
else:
# 读取'res/command'下所有文件的文件名到filename
for root, dirs, files in os.walk('res/command'):
for file in files:
filename = open('res/filename.txt','a')
filename.write('/')
# filename.truncate()
filename.write(str(file))
filename.close()
filename1 = open('res/filename.txt')
fn = filename1.read()
filename1.close()
print fn
print '/' + str(self.taskName.text()) + '.cmd'
# 如果任务名在filename中能找到,则说明任务已经存在
if '/' + str(self.taskName.text()) + '.cmd' in fn:
QtUtil.showOkDialog(self, u'创建失败', u'任务已存在') else: # 任务内容
if self.schedule.currentText() == 'monthly':
print 'monthly'
run = 'schtasks /create /tn '+ self.taskName.text() + ' /tr '+os.getcwd()+'/res/command/'+self.taskName.text()+'.bat /sc ' + self.schedule.currentText() + ' /d ' +self.modifier.text() + ' /m ' + self.month.currentText() + ' /st ' + self.timeEdit.text() + ' /sd ' + self.startDate.text() + ' /ed ' + self.endDate.text()
elif self.schedule.currentText() == 'once':
print 'once'
run = 'schtasks /create /tn '+ self.taskName.text() + ' /tr '+os.getcwd()+'/res/command/'+self.taskName.text()+'.bat /sc ' + self.schedule.currentText() + ' /st ' + self.timeEdit.text() + ' /sd ' + self.startDate.text()
if self.startDate.text() < time.strftime('%Y/%m/%d') or (self.timeEdit.text() <= time.strftime('%H:%M:%S') and self.startDate.text() == time.strftime('%Y/%m/%d')) :
QtUtil.showOkDialog(self, u'时间错误', u'设置时间早于当前时间')
return
else:
print 'not monthly'
run = 'schtasks /create /tn '+ self.taskName.text() + ' /tr '+os.getcwd()+'/res/command/'+self.taskName.text()+'.bat /sc ' + self.schedule.currentText() + ' /mo ' +self.modifier.text() + ' /st ' + self.timeEdit.text() + ' /sd ' + self.startDate.text() + ' /ed ' + self.endDate.text() # 创建命令文件
fd = open('res/command/'+self.taskName.text()+'.bat','w')
fd.write(cmd)
fd.close() # 创建任务文件
f = open('res/command/'+self.taskName.text()+'.cmd','w')
f.write(run)
f.close()
# 创建任务
os.system(os.getcwd()+'\\res\command\\'+str(self.taskName.text())+'.cmd')
QtUtil.showOkDialog(self, u'创建成功', u'创建成功')
@pyqtSignature("")
def on_delete_btn_clicked(self):
"""
删除任务.
"""
# 强制删除删除框内任务
x=os.system('schtasks /delete /tn '+str(self.taskDelete.text()).decode('gbk')+' /f')
# 如果已经任务已经删除,则报任务不存在
if x==1:
QtUtil.showOkDialog(self, u'删除失败', u'任务名错误或不存在该任务')
else:
os.remove('res/filename.txt') if os.path.exists('res/command/'+self.taskDelete.text()+'.cmd'):
os.remove('res/command/'+str(self.taskDelete.text())+'.bat')
os.remove('res/command/'+str(self.taskDelete.text())+'.cmd') # 读取'res/command'下所有文件的文件名到filename
for root, dirs, files in os.walk('res/command'):
for file in files:
filename = open('res/filename.txt','a')
filename.write('/')
# filename.truncate()
filename.write(str(file))
filename.close()
filename1 = open('res/filename.txt')
fn = filename1.read()
filename1.close()
# 删除任务,并删除命令文件与任务文件
QtUtil.showOkDialog(self, u'删除成功', u'删除成功') @pyqtSignature("")
def on_query_btn_clicked(self):
"""
查询任务.
"""
# 调整 936 为 437 美国编码,才可运行
os.system('chcp 437')
# 查询任务
os.system('schtasks /query')
# 在生成新log文件前先删除以前的log文件
if os.path.exists('res/log.txt'):
os.remove('res/log.txt') # 遍历'res/command'的所有文件,将所有文件内容复制到log文件中
for root, dirs, files in os.walk('res/command'):
for file in files:
dir = str(root)+'/'+str(file)
f = open(dir,'r')
scripts = f.read()
new_path_filename = 'res/log.txt' f = open(new_path_filename, 'a')
f.write(scripts)
f.write('\n')
f.close()
# 读取log文件
if os.path.exists('res/log.txt'):
fd=open('res/log.txt')
info = fd.read()
fd.close()
# 在查询窗口显示log文件内容
self.taskQuery.setText(str(info))
else:
QtUtil.showOkDialog(self, u'失败', u'不存在任务') @pyqtSignature("")
def on_delall_btn_clicked(self):
"""
清空任务.
"""
os.system('schtasks /delete /tn * /f')
if os.path.exists('res/log.txt'):
os.remove('res/log.txt')
if os.path.exists('res/filename.txt'):
os.remove('res/filename.txt')
shutil.rmtree('res/command')
os.mkdir('res/command')
QtUtil.showOkDialog(self, u'成功', u'任务清空')

运行结果

“任务名称”填写任务的名字,计划类型选择时间,频率填写次数,在计划类型中除了monthly之外的其他类型都填写频率,monthly时日期填写日期号数,月份也只在选择monthly时候需要选择,其他时候不用选择,月份中*号问任意月,接着填写开始时间、开始日期、结束日期,结束日期要大于开始日期,最后填写所要执行的命令,则任务创建成功。,创建任务后随时可以查阅任务,点击查询任务即可,删除任务只要填上要删除的任务名称,点击删除任务即可,清空任务为删除所有任务。

本站文章为宝宝巴士 SD.Team原创,转载务必在明显处注明:(作者官方网站:宝宝巴士
转载自【宝宝巴士SuperDo团队】 原文链接: http://www.cnblogs.com/superdo/p/4805826.html

计划任务工具-windows的更多相关文章

  1. 使用Windows任务计划程序运行Windows PowerShell脚本

    创建计划任务以运行PowerShell脚本 我需要创建一个计划任务来运行Windows PowerShell脚本的第一件事是我将执行的命令行.找到这个的简单方法是使用Run 命令.有时,我需要知道什么 ...

  2. C++ 检测内存泄露工具 -- Windows平台

    平台:Windows7 64bit,编译器G++(mingw) 工具:Dr Memory,项目主页:https://code.google.com/p/drmemory/ (可能要FQ,可能会很慢,所 ...

  3. Apache自带 ab压测工具 Windows配置使用说明 - 随笔记录

    我们先来了解一下ab工具的概念,摘自网络: ab是apache自带的压力测试工具.ab非常实用,它不仅可以对apache服务器进行网站访问压力测试,也可以对或其它类型的服务器进行压力测试.比如ngin ...

  4. Kettle转换工具Windows版安装

    一.简介 Kettle是一款国外开源的ETL工具,纯java编写,可以在Window.Linux.Unix上运行,绿色无需安装,数据抽取高效稳定. Kettle 中文名称叫水壶,该项目的主程序员MAT ...

  5. 常用工具(Windows版本)

    为原有版本修改为markdown后的更新,这个编辑器真心不错,只需要把原来喜欢的表格改成列表即可. 代码工具 代码管理工具 SourceTree:支持windows和mac跨平台使用的git图形化客户 ...

  6. linux任务计划 chkconfig工具 systemd管理服务 unit介绍 target介绍

    linux任务计划 任务计划:特定时间备份数据,重启服务,shell脚本,单独的命令等等. 任务计划配置文件:cat /etc/crontab [root@centos7 ~]# cat /etc/c ...

  7. 【AUTO Uninstaller 中文版-详细使用教程】AUTODESK系列软件MAYA/CAD/3DSMAX/INVENTOR终极完美修复卸载工具 Windows x64位 【原创搬家】

    小伙伴是不是遇到 MAYA/CAD/3DSMAX/INVENTOR/REVIT 安装失败或者安装不了的问题了呢?AUTODESK系列软件着实令人头疼,MAYA/CAD/3DSMAX/INVENTOR/ ...

  8. AUTO Uninstaller【教程】AUTODESK系列软件MAYA,3DSMAX,CAD,INVENTOR,REVIT修复卸载工具 Windows x64位

    小伙伴是不是遇到 MAYA/CAD/3DSMAX/INVENTOR/REVIT 安装失败或者安装不了的问题了呢?AUTODESK系列软件着实令人头疼,MAYA/CAD/3DSMAX/INVENTOR/ ...

  9. Thinkphp5 主动式 计划任务 支持windows和linux

    百度搜索过相关的php计划任务的资料,特别是搜索thinkphp的计划任务,目前能明确实现的都是被动式的,就是通过tp3.2自带的计划任务类实现,通过挂钩子的形式,用户访问网站的时候就执行计划任务,这 ...

随机推荐

  1. Nginx模块开发(3)————使用upstream访问第三方服务

    该模块可以完成如下的功能,当我们输入http://你的ip/lcwupstream时,会使用upstream方式访问淘宝搜索,打开淘宝搜索的主页面,代码如下: //start from the ver ...

  2. 再谈 PHP 未来之路

    前段时间我写过一篇博文<phper:敢问路在何方>,分析了 PHPer 的困境以及 PHP 程序员的学习.进阶突破之路.同时我在知乎上也发过类似的提问.从大家的评论和回答看,大体分为以下几 ...

  3. 线段树的区间合并 B - LCIS

    B - LCIS HDU - 3308 这个是一个很简单很明显的线段树的区间合并,不过区间合并的题目都还是有点难写,建议存个板子. #include <cstdio> #include & ...

  4. qt creator源码全方面分析(4-4)

    目录 统计接口实现 统计接口实现 我们知道,插件架构必不可少的是定义接口类,即抽象基类,描述用户需要自定义实现的内容.此外,一般还有一个管理器类,对接口类的所有实现类进行管理,并调用其中的接口进行.源 ...

  5. 【HBase】协处理器是什么?又能干什么?怎么用?

    目录 简单了解 官方帮助文档 协处理器出现的原因 协处理器的分类 Observer Endpoint Phoenix 协处理器的使用 加载方式 静态加载 动态加载 协处理器的卸载 协处理器Observ ...

  6. 【Hadoop离线基础总结】Yarn集群的资源调度

    Yarn集群的资源调度 介绍 概述 Yarn是 Hadoop 2.x 引入的新的资源管理系统模块,主要用于管理集群当中的资源(主要是服务器的各种硬件资源,比如内存.CPU等),它不光管理硬件资源,还管 ...

  7. 【Hadoop离线基础总结】HDFS的API操作

    HDFS的API操作 创建maven工程并导入jar包 注意 由于cdh版本的所有的软件涉及版权的问题,所以并没有将所有的jar包托管到maven仓库当中去,而是托管在了CDH自己的服务器上面,所以我 ...

  8. 谈谈R语言的缺点和优点

    编码不友好,对中文不友好,逼着你用RStudio.Jupyter Notebook/Jupyter Lab.图标丑,每次点击感觉辣眼睛. 为节省内存,R语言计算默认有效数字为7位,比Excel的15位 ...

  9. (数据科学学习手札83)基于geopandas的空间数据分析——geoplot篇(下)

    本文示例代码.数据及文件已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 在上一篇文章中我们详细学习了geop ...

  10. 【Django组件】KindEditor富文本编辑器上传文件,html样式文本,VUE异步提交数据(易懂版)

    1:下载与配置 适合版本: python3 下载:http://kindeditor.net/down.php 文档:http://kindeditor.net/doc.php 将文件包放入stati ...