最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

python版本的仿windows计划任务工具_python

来源:动视网 责编:小采 时间:2020-11-27 14:12:23
文档

python版本的仿windows计划任务工具_python

python版本的仿windows计划任务工具_python:这篇文章主要介绍了python版本的仿windows计划任务工具,计划任务工具根据自己设定的具体时间,频率,命令等属性来规定所要执行的计划,当然功能不是很全大家可以补充计划任务工具-windows计划任务工具根据自己设定的具体时间,频率,命令等属性来规定所要执行
推荐度:
导读python版本的仿windows计划任务工具_python:这篇文章主要介绍了python版本的仿windows计划任务工具,计划任务工具根据自己设定的具体时间,频率,命令等属性来规定所要执行的计划,当然功能不是很全大家可以补充计划任务工具-windows计划任务工具根据自己设定的具体时间,频率,命令等属性来规定所要执行
这篇文章主要介绍了python版本的仿windows计划任务工具,计划任务工具根据自己设定的具体时间,频率,命令等属性来规定所要执行的计划,当然功能不是很全大家可以补充

计划任务工具-windows

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

效果图

代码

# -*- 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()+'\rescommand\'+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('
')
 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时候需要选择,其他时候不用选择,月份中*号问任意月,接着填写开始时间、开始日期、结束日期,结束日期要大于开始日期,最后填写所要执行的命令,则任务创建成功。,创建任务后随时可以查阅任务,点击查询任务即可,删除任务只要填上要删除的任务名称,点击删除任务即可,清空任务为删除所有任务。

文档

python版本的仿windows计划任务工具_python

python版本的仿windows计划任务工具_python:这篇文章主要介绍了python版本的仿windows计划任务工具,计划任务工具根据自己设定的具体时间,频率,命令等属性来规定所要执行的计划,当然功能不是很全大家可以补充计划任务工具-windows计划任务工具根据自己设定的具体时间,频率,命令等属性来规定所要执行
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top