Страница 1 из 1

Папка-шлюз

Добавлено: Чт окт 18, 2018 16:15
mrmerak
Всем приветы.

Есть папка "А".
В этой папке есть другие папки "АВ".

Нужно чтобы в 00:00 в папке "А" удалялись все файлы (но не папки), а в папках "АВ" удалялось все.

Подозреваю, что тут нужны батник и планировщик... подскажите как быть. Заранее спс.

Добавлено: Чт окт 18, 2018 17:26
LonerD
По быстрому на AutoHotkey получился такой скрипт.
Dir - исходная папка, Period - периодичность проверки (1000 = 1 секунде).

Код: Выделить всё

#NoEnv
;#NoTrayIcon
#SingleInstance ignore
#Persistent

Dir := "d:\A"
Period := "1000"

SetTimer, RemFiles, % Period
return

RemFiles:
  Loop, Files, %Dir%\*.*, FDR
  {
    if InStr(FileExist(A_LoopFileLongPath), "D")
    {
      if ( A_LoopFileDir != Dir )
        FileRemoveDir, %A_LoopFileLongPath%, 1
    }
    else
    {
      FileSetAttrib, -R, %A_LoopFileLongPath%
      FileDelete, %A_LoopFileLongPath%
    }
  }
return

Добавлено: Пт окт 19, 2018 08:46
mrmerak
Изображение


mrmerak писал(а):и планировщик...
это победил уже:
Schtasks.exe /Create /RL Highest /TN CleanUP /SC Daily /ST 23:59 /TR "D:\CleanUP.bat"

Добавлено: Пт окт 19, 2018 13:12
LonerD
mrmerak
Это не AutoIT, а AutoHotkey скрипт.
Для запуска скрипта достаточно одного файла из архива. Я предпочитаю 32-хбитную Unicode-версию AutoHotkeyU32.exe как наиболее универсальную. Можно откомпилировать в отдельный ехе-шник (компилятор тоже в архиве).

Добавлено: Пт окт 19, 2018 13:14
mrmerak
LonerD
опа! да, недоглядел
спс

вообщем уже и решение на автоите подсказали:

Код: Выделить всё

#include <File.au3>
FileDelete("D:\folder A\*.*") ;удаляем все файлы из folder A
$folders_list=_FileListToArray("D:\folder A", "*", 2) ;получаем список папок, вложенных в folder A
For $i=1 To UBound($folders_list)-1
    DirRemove("D:\folder A\" & $folders_list[$i], 1) ;удаляем папки и все внутри них
    DirCreate("D:\folder A\" & $folders_list[$i]) ;создаем пустые папки снова
Next