• windows10 定时任务自动导入


    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    
    # @Author: zhibo.wang
    # @E-mail: gm.zhibo.wang@gmail.com
    # @Date  : 2020/9/8 15:54
    # @Desc  : win pc wechat
    
    
    """
    "spider_startime" : "17",
    "spider_frequency" : "1d",
    schtasks /create  /sc daily /st 08:00:00 /tn "wechat_login" /tr G:PythonTestwechatGzhcrontab_task.bat
    schtasks 无法设置起始于参数,也就无法执行bat批处理
    
    schtasks /delete /tn wechat_login /F
    """
    
    import getpass
    import hashlib
    import os
    import socket
    import subprocess
    import time
    
    import requests
    
    # Command_Command  要执行的文件
    # WorkingDirectory_WorkingDirectory 起始于
    # URI_URI 任务名称
    # StartBoundary_StartBoundary  任务时间 2020-09-09T11:55:00
    # Date_Date 创建时间 2020-09-09T09:22:13
    # Author_Author 机器名用户名 DESKTOP-1OCBAP2an
    # UserId_UserId sid S-1-5-21-xxxxxxxx-xxxxxxx-xxxxxxx-1001
    
    task_xml_demo = '''<?xml version="1.0" encoding="UTF-16"?>
    <Task version="1.2" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task">
      <RegistrationInfo>
        <Date>Date_Date</Date>
        <Author>Author_Author</Author>
        <URI>\URI_URI</URI>
      </RegistrationInfo>
      <Triggers>
        <CalendarTrigger>
          <StartBoundary>StartBoundary_StartBoundary</StartBoundary>
          <Enabled>true</Enabled>
          <ScheduleByDay>
            <DaysInterval>1</DaysInterval>
          </ScheduleByDay>
        </CalendarTrigger>
      </Triggers>
      <Principals>
        <Principal id="Author">
          <UserId>UserId_UserId</UserId>
          <LogonType>InteractiveToken</LogonType>
          <RunLevel>LeastPrivilege</RunLevel>
        </Principal>
      </Principals>
      <Settings>
        <MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy>
        <DisallowStartIfOnBatteries>true</DisallowStartIfOnBatteries>
        <StopIfGoingOnBatteries>true</StopIfGoingOnBatteries>
        <AllowHardTerminate>true</AllowHardTerminate>
        <StartWhenAvailable>false</StartWhenAvailable>
        <RunOnlyIfNetworkAvailable>false</RunOnlyIfNetworkAvailable>
        <IdleSettings>
          <StopOnIdleEnd>true</StopOnIdleEnd>
          <RestartOnIdle>false</RestartOnIdle>
        </IdleSettings>
        <AllowStartOnDemand>true</AllowStartOnDemand>
        <Enabled>true</Enabled>
        <Hidden>false</Hidden>
        <RunOnlyIfIdle>false</RunOnlyIfIdle>
        <WakeToRun>false</WakeToRun>
        <ExecutionTimeLimit>PT72H</ExecutionTimeLimit>
        <Priority>7</Priority>
      </Settings>
      <Actions Context="Author">
        <Exec>
          <Command>Command_Command</Command>
          <WorkingDirectory>WorkingDirectory_WorkingDirectory</WorkingDirectory>
        </Exec>
      </Actions>
    </Task>'''
    
    import_xml_demo = '''for %%f in (xml_path) do (
      call :importfile "%%f"
    )
    exit /b 0
     
    :importfile
    
    set filename=%1
    
    schtasks /create /tn "tn_tn" /xml %filename% 
    echo on
    '''
    
    
    class Create(object):
        key = "click_pc_wechat_task"
    
        def __init__(self):
            self.delete_crontab()
            self.cwd = os.getcwd()
            self.host_name = socket.gethostname()
            self.user_name = getpass.getuser()
            self.create_import_xml_file()
            self.create_crontab_task_file()
            self.create_vbs_task_file()
    
        def get_usersid(self):
            UserId = None
            cmd = "wmic useraccount where name="{}" get sid".format(self.user_name)
            print(cmd)
            userid_str = [i.replace(" ", "") for i in subprocess.getoutput(cmd).split("
    ") if len(i.replace(" ", "")) > 10]
            if len(userid_str) > 0:
                UserId = userid_str[0]
            return UserId
    
        def run_cmd(self, cmd):
            os.system(cmd)
    
        def delete_crontab(self):
            print("删除计划任务")
            cmd = "schtasks /delete /tn {} /F".format(self.key)
            self.run_cmd(cmd)
    
        def create_import_xml_file(self):
            print("创建import_xml_file")
            xml_path = "{}click_pc_wechat_task.xml".format(self.cwd)
            text = import_xml_demo.replace(
                "xml_path", xml_path).replace("tn_tn", self.key)
            file_name = "{}import_xml.bat".format(self.cwd)
            self.create_file(file_name, text)
    
        def create_crontab_task_file(self):
            print("创建crontab_task_file")
            text = "python {}click_pc_wechat.py".format(self.cwd)
            file_name = "{}crontab_task.bat".format(self.cwd)
            self.create_file(file_name, text)
    
        def create_vbs_task_file(self):
            """
            隐藏cmd窗口
            Set ws = CreateObject("Wscript.Shell")
            ws.run "cmd /c G:PythoProjectspos-crawler	runkDataSpidersDataSpiderspc_wechat_gzhcrontab_task.bat",vbhide
            """
            print("创建vbs_task_file")
            text = 'Set ws = CreateObject("Wscript.Shell") 
    ws.run "cmd /c {file_name}",vbhide'.format(
                file_name="{}crontab_task.bat".format(self.cwd)
            )
            file_name = "{}crontab_task.vbs".format(self.cwd)
            self.create_file(file_name, text)
    
        def md5_str(self, str):
            md5 = hashlib.md5()
            md5.update(str.encode())
            result = md5.hexdigest()
            return result
    
        def get_date(self):
            # 时间戳转换
            time_local = time.localtime(time.time())
            date = time.strftime("%Y-%m-%dT%H", time_local)
            return date
    
        def create_xml(self, spider_startime, spider_frequency):
            day_date = self.get_date()
            UserId = self.get_usersid()
            if len(spider_startime) == 1:
                end_time = "0{}:05:00".format(spider_startime)
            else:
                end_time = "{}:14:00".format(spider_startime)
    
            Author = "{0}\{1}".format(self.host_name, self.user_name)
            Command = "{}crontab_task.vbs".format(self.cwd)
            WorkingDirectory = "{}\".format(self.cwd.split("\")[0])
            URI = self.key
            StartBoundary = day_date.split("T")[0] + "T" + end_time
            DateStr = day_date + ":00:00"
    
            text = task_xml_demo.replace(
                "Command_Command", Command
            ).replace(
                "WorkingDirectory_WorkingDirectory", WorkingDirectory
            ).replace(
                "URI_URI", URI
            ).replace(
                "StartBoundary_StartBoundary", StartBoundary
            ).replace(
                "Date_Date", DateStr
            ).replace(
                "Author_Author", Author
            ).replace("UserId_UserId", UserId)
    
            file_name = "{}click_pc_wechat_task.xml".format(self.cwd)
            print("创建click_pc_wechat_task.xml")
            self.create_file(file_name, text)
            cmd = "{}import_xml.bat".format(self.cwd)
            print("执行 bat 文件 导入定时任务计划")
            self.run_cmd(cmd)
    
        def create_file(self, filename, text):
            if ".xml" in filename:
                f = open(filename, "w+", encoding="UTF-16")
            else:
                f = open(filename, "w+")
            f.write(text)
            f.close()
    
        def run(self):
            result = {"spider_startime": "16",
                      "spider_frequency": "1d"}
            if result:
                spider_startime = result.get("spider_startime")
                spider_frequency = result.get("spider_frequency")
                self.create_xml(spider_startime, spider_frequency)
    
    
    if __name__ == "__main__":
        C = Create()
        C.run()
  • 相关阅读:
    [转]Convolution Neural Network (CNN) 原理与实现
    [转]深度学习CNN研究反向
    [转]一张图看懂:Google AlphaGo的原理、弱点
    [转]前馈型神经网络与反馈型神经网络的区别
    [转]认知机和神经认知机
    [转]技术向:一文读懂卷积神经网络CNN
    PHP 日期格式化 参数参考
    PHP MAIL DEMO(程序代码直接发送邮件)
    PHP上传文件DEMO
    PDO事务管理DEMO
  • 原文地址:https://www.cnblogs.com/dockers/p/13654428.html
Copyright © 2020-2023  润新知