Jump to content

Удалить файл по крону на сервере в заданное время, когда сервер выключен, используя C++ или Python


AndrewPro

Recommended Posts

  • Admin

Удаление файла на сервере в заданное время, когда сервер выключен, требует установки задачи на удаление файла на сервере до его выключения. Это может быть достигнуто с помощью использования операционной системы для установки задачи планировщика на удаление файла в заданное время. Вот пример кода на C++, который позволяет установить задачу планировщика на удаление файла в заданное время:

#include <iostream>
#include <windows.h>
#include <taskschd.h>
#pragma comment(lib, "taskschd.lib")
#pragma comment(lib, "comsupp.lib")

using namespace std;

int main()
{
    // Определить время, когда нужно удалить файл (в данном примере - 21 марта 2023 года, 9:00 утра)
    SYSTEMTIME st = { 2023, 3, 0, 21, 9, 0, 0, 0 };
    FILETIME ft;
    SystemTimeToFileTime(&st, &ft);

    // Получить указатель на планировщик задач
    ITaskService* pService = nullptr;
    CoInitialize(nullptr);
    HRESULT hr = CoCreateInstance(CLSID_TaskScheduler, nullptr, CLSCTX_INPROC_SERVER, IID_ITaskService, (void**)&pService);

    if (FAILED(hr))
    {
        cout << "Ошибка создания экземпляра планировщика задач: " << hr << endl;
        return 1;
    }

    // Войти в планировщик задач с помощью учетных данных администратора
    hr = pService->Connect(_variant_t(), _variant_t(), _variant_t(), _variant_t());

    if (FAILED(hr))
    {
        cout << "Не удалось подключиться к планировщику задач: " << hr << endl;
        pService->Release();
        CoUninitialize();
        return 1;
    }

    // Создать экземпляр планировщика задач
    ITaskFolder* pRootFolder = nullptr;
    hr = pService->GetFolder(_bstr_t("\\"), &pRootFolder);

    if (FAILED(hr))
    {
        cout << "Ошибка получения корневого каталога планировщика задач: " << hr << endl;
        pService->Release();
        CoUninitialize();
        return 1;
    }

    // Создать новую задачу планировщика
    ITaskDefinition* pTask = nullptr;
    hr = pService->NewTask(0, &pTask);

    if (FAILED(hr))
    {
        cout << "Ошибка создания новой задачи планировщика задач: " << hr << endl;
        pRootFolder->Release();
        pService->Release();
        CoUninitialize();
        return 1;
    }

    // Установить параметры задачи планировщика
    pTask->put_Principal(_bstr_t(L""));
    IActionCollection* pActionCollection = nullptr;
    hr = pTask->get_Actions(&pActionCollection);

    if (FAILED(hr))
    {
        cout << "Ошибка получения коллекции действий задачи плани

 

 

В Python можно использовать модуль win32com.client, чтобы работать с планировщиком задач Windows. Вот пример кода на Python, который устанавливает задачу планировщика на удаление файла в заданное время:

import win32com.client
import pythoncom

def delete_file_task():
    # Определить время, когда нужно удалить файл (в данном примере - 21 марта 2023 года, 9:00 утра)
    delete_time = "2023-03-21T09:00:00"

    # Получить указатель на планировщик задач
    scheduler = win32com.client.Dispatch("Schedule.Service")
    scheduler.Connect()

    # Создать экземпляр планировщика задач
    root_folder = scheduler.GetFolder("\\")

    # Создать новую задачу планировщика
    task = scheduler.NewTask(0)

    # Установить параметры задачи планировщика
    task.RegistrationInfo.Description = "Удаление файла"
    task.Settings.Enabled = True
    task.Settings.AllowDemandStart = True
    task.Settings.StopIfGoingOnBatteries = False
    task.Settings.DisallowStartIfOnBatteries = False
    task.Settings.StartWhenAvailable = True

    # Установить действие для задачи планировщика
    action = task.Actions.Create(win32com.client.constants.task_action_exec)
    action.ID = "DeleteFileAction"
    action.Path = "cmd.exe"
    action.Arguments = "/c del C:\\path\\to\\file.txt"
    action.WorkingDirectory = "C:\\path\\to"

    # Установить триггер для задачи планировщика
    trigger = task.Triggers.Create(win32com.client.constants.task_trigger_time)
    trigger.StartBoundary = delete_time

    # Зарегистрировать задачу планировщика
    root_folder.RegisterTaskDefinition("DeleteFileTask", task)

if __name__ == "__main__":
    pythoncom.CoInitialize()
    delete_file_task()
    pythoncom.CoUninitialize()

Обратите внимание, что для работы с модулем win32com.client необходимо установить пакет pywin32.

Telegram сайта  "Типичный социум"

Do not be indifferent. Support for motivation to continue on to engage in this further! Thanks

img.png

Link to comment
Share on other sites

  • AndrewPro changed the title to Удалить файл по крону на сервере в заданное время, когда сервер выключен, используя C++ или Python

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Обжалование или подача апелляции на снятие Бана в группе "Типичный Социум IT!
Заявки и обжалование отправлять в Телеграм bot @ModeratorTS_Bot


  • Текущие цели пожертвования

    • Собрано 4.00 USD
  • 136 Небольшой соц. опрос по определенным языкам программирования...

    1. 1. Выберите язык программирования из списка, который вам больше всего нравится или на котором вы программируете?


      • PHP 7.x
      • JavaScript
      • Python 3.x
      • C#
      • Node.js
      • Dart \ Flutter
      • ASP.Net Core
      • .Net Core
      • C++
      • TypeScript
      • Ruby
      • Go
      • Kotlin

  • 129 Небольшой соц. опрос по определенным IDE (TOP 15 IDE)

    1. 1. Выберите из списка среду разработки на которой вы пишите код


      • Visual Studio Community
      • VS Code
      • WebStorm
      • PhpStorm
      • NetBeans
      • Notepad++
      • Eclipse
      • IntelliJ IDEA
      • PyCharm
      • Qt
      • Android Studio
      • Другие редакторы от JetBrains
      • SublimeText
      • Vim
      • Atom

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.Privacy Policy

Write what you are looking for and press enter or click the search icon to begin your search

-->