1 (изменено: fornit, 2024-08-18 01:58:05)

Тема: AHK: проверка в данном каталоге наличия файлов с определенной маской

Как сделать скрипт, который бы каждый день в определенное время проверял в определенном каталоге наличие файл(а)(ов) с маской Screenshot_YYYY-MM-DD-*.* где YYYY MM DD это сегодняшняя дата (соотв. год, месяц и день), и если таких нет, выдавал бы сообщение?

Спросил у chatGPT, но его скрипт не работает. Просто запускается -- и все, никаких сообщений!


; Устанавливаем время проверки
; Измените значения на нужные вам
Hour := 0 ; Час
Minute := 59 ; Минута
Second := 0 ; Секунда

; Задаем путь к папке, где нужно искать скриншоты
; Измените путь на нужный вам
TargetFolder := "E:\MEGA\MegaSyncFiles\DCIM Internal\Screenshots\"

; Функция для проверки наличия файлов
CheckForScreenshots() {
    ; Получаем текущую дату
    ; Используем формат YYYY-MM-DD
    FormatTime, Today, yyyy-MM-dd

    ; Создаем маску для поиска файлов
    FilenameMask := TargetFolder "Screenshot_" Today "*.*"

    ; Переменная для хранения количества файлов
    FileCount := 0

    ; Используем FileSelectFile для поиска файлов, 
    ; но вместо выбора, мы просто считаем их
    FileSelectFile, FoundFile, , FilenameMask, 1
    Loop, %FileCount%
        FileCount++

    ; Выводим сообщение в зависимости от количества файлов
    if (FileCount = 0) {
        MsgBox, 0, "Внимание!", "В папке "%TargetFolder%" не найдены скриншоты за сегодня (" Today "). "
    } else {
        MsgBox, 0, "Информация", "В папке "%TargetFolder%" найдено " FileCount " скриншотов за сегодня (" Today "). "
    }
}

; Запускаем проверку каждый день в указанное время
SetTimer, CheckForScreenshots, %Hour%%Minute%%Second%

2

Re: AHK: проверка в данном каталоге наличия файлов с определенной маской

Попробуйте так:

#Persistent

; Устанавливаем время проверки
; Измените значения на нужные вам
Hour := 0 ; Час
Minute := 59 ; Минута
Second := 0 ; Секунда

; Задаем путь к папке, где нужно искать скриншоты
; Измените путь на нужный вам
TargetFolder := A_Desktop . "\" ; должен быть слеш в конце

timeToCheck := timeDiff := Format("{}{:02}{:02}{:02}", SubStr(A_Now, 1, 8), Hour, Minute, Second)
timeDiff -= A_Now, s
if (timeDiff < 0) {
    timeToCheck += 1, D
    timeToCheck -= A_Now, s
    timeDiff := timeToCheck
}
SetTimer, CheckFiles, % "-" . (timeDiff * 1000)

CheckFiles() {
    global TargetFolder
    SetTimer,, % "-" . 24 * 3600 * 1000
    FormatTime, time,, yyyy-MM-dd-*.*
    if !FileExist(TargetFolder . "Screenshot_" . time) {
        MsgBox Файлы отсутствуют
    }
}
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

3

Re: AHK: проверка в данном каталоге наличия файлов с определенной маской

А можно так, чтобы он, если файлы есть, выдавал их количество и объем?

4

Re: AHK: проверка в данном каталоге наличия файлов с определенной маской

Можно.
Loop (files & folders)
A_LoopFileSize

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder