Автор Тема: Папка-шлюз  (Прочитано 745 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Эта тема содержит сообщение, помеченное как лучший ответ. Кликните здесь для перехода к этому сообщению.

Оффлайн NOne [?]

  • Новичок
  • *
  • Сообщений: 9
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Папка-шлюз
« Создано: Октябрь 19, 2018, 10:52:53 »
Приветствую.

Прошу помощи в такой задаче:

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

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

Без гуи ибо скрипт будет закинут в планировщик.

Заранее спасибо.

Русское сообщество AutoIt

Папка-шлюз
« Отправлен: Октябрь 19, 2018, 10:52:53 »

Оффлайн hedji [?]

  • Продвинутый
  • ***
  • Сообщений: 323
  • Репутация: 57
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: Папка-шлюз
« Ответ #1, Отправлен: Октябрь 19, 2018, 11:23:34 »
Код: AutoIt [Выделить]
#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
 


Оффлайн NOne [?]

  • Новичок
  • *
  • Сообщений: 9

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: Папка-шлюз
« Ответ #2, Отправлен: Октябрь 19, 2018, 11:32:25 »
Спасибо. Работает.

Если можно еще пара моментов.

1. Нужны исключения. Глобальные.

Типа так:
Код: AutoIt [Выделить]
Global $Dir = "D:\folder A\" ;целевая папка
Global $exceptionsDir = "папка" ;не удаляем её из первого уровня
Global $exceptionsFile = "файл" ;не удаляем его из корня


2. По окончании работы пусть пишет log что удалил. Просто один txt-файлик который молча перезаписывается каждый раз после работы скрипта.

Оффлайн hedji [?]

  • Продвинутый
  • ***
  • Сообщений: 323
  • Репутация: 57
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: Папка-шлюз
« Ответ #3, Отправлен: Октябрь 19, 2018, 12:27:16 »
Про папку первого уровня не понял, папки же и так остаются.

Код: AutoIt [Выделить]
#include <File.au3>

Global $Dir = "D:\folder A\" ;целевая папка
Global $exceptionsFile = "D:\folder A\Новый текстовый документ.txt" ;не удаляем его из корня

FileDelete($Dir & "deleted_log.txt")

$files_list=_FileListToArrayRec($Dir, "*", 1, 1, 0, 2) ;получаем рекурсивно список всех файлов во всех папках
For $i=1 To UBound($files_list)-1
    If $files_list[$i] <> $exceptionsFile Then ;если это не файл исключения
        FileDelete($files_list[$i]) ;то удаляем этот файл
        FileWriteLine($Dir & "deleted_log.txt", $files_list[$i]) ;пишем в лог
    EndIf
Next

$folders_list=_FileListToArray($Dir, "*", 2) ;получаем список папок, вложенных в folder A
For $i=1 To UBound($folders_list)-1
    DirRemove($Dir & $folders_list[$i], 1) ;удаляем папки и все внутри них
    DirCreate($Dir & $folders_list[$i]) ;создаем пустые папки снова
Next
 


Русское сообщество AutoIt

Re: Папка-шлюз
« Ответ #3 Отправлен: Октябрь 19, 2018, 12:27:16 »

Оффлайн NOne [?]

  • Новичок
  • *
  • Сообщений: 9

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: Папка-шлюз
« Ответ #4, Отправлен: Октябрь 19, 2018, 12:49:15 »
ексепшен у меня удаляется


сори, не правильно выразился

Global $exceptionsDir = "папка" ;не удаляем её СОДЕРЖИМОЕ из первого уровня

Оффлайн hedji [?]

  • Продвинутый
  • ***
  • Сообщений: 323
  • Репутация: 57
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: Папка-шлюз
« Ответ #5, Отправлен: Октябрь 19, 2018, 14:53:22 »
ексепшен у меня удаляется

Должен быть указан полный путь к файлу, как в коде.
Код: AutoIt [Выделить]
Global $exceptionsFile = "D:\folder A\Новый текстовый документ.txt"
 


не удаляем её СОДЕРЖИМОЕ из первого уровня

D:\folder A\FolderAB
D:\folder A\FolderAB\FolderC
D:\folder A\FolderAB\123.txt
D:\folder A\FolderAB\FolderC\234.txt
D:\folder A\FolderAB\FolderC\folderD
D:\folder A\FolderAB\FolderC\folderD\567.txt

Что из перечисленного должно остаться, а что удалиться?

Оффлайн NOne [?]

  • Новичок
  • *
  • Сообщений: 9

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: Папка-шлюз
« Ответ #6, Отправлен: Октябрь 19, 2018, 14:59:46 »
Должен быть указан полный путь к файлу, как в коде.

а понял, типа
Код: AutoIt [Выделить]
Global $exceptionsFile = $Dir & "ПРОЧТИ МЕНЯ.txt" ;не удаляем его из корня



D:\folder A\FolderAB
D:\folder A\FolderAB\FolderC
D:\folder A\FolderAB\123.txt
D:\folder A\FolderAB\FolderC\234.txt
D:\folder A\FolderAB\FolderC\folderD
D:\folder A\FolderAB\FolderC\folderD\567.txt

Что из перечисленного должно остаться, а что удалиться?

FolderAB

они ж разными названиями, поэтому типа "FolderAB5"


Кстати, можно сделать чтобы расположение log тоже указывалось вначале? Ибо юзерам оно не к чему, а только админу почитать

Оффлайн hedji [?]

  • Продвинутый
  • ***
  • Сообщений: 323
  • Репутация: 57
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: Папка-шлюз
« Ответ #7, Отправлен: Октябрь 19, 2018, 15:03:57 »
D:\folder A\FolderAB должен остаться со всем содержимым?

Русское сообщество AutoIt

Re: Папка-шлюз
« Ответ #7 Отправлен: Октябрь 19, 2018, 15:03:57 »

Оффлайн NOne [?]

  • Новичок
  • *
  • Сообщений: 9

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: Папка-шлюз
« Ответ #8, Отправлен: Октябрь 19, 2018, 15:05:52 »
D:\folder A\FolderAB должен остаться со всем содержимым?

да

Помечен как лучший ответ пользователем NOne Отправлен Октябрь 19, 2018, 15:40:46

Оффлайн hedji [?]

  • Продвинутый
  • ***
  • Сообщений: 323
  • Репутация: 57
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: Папка-шлюз
« Ответ #9, Отправлен: Октябрь 19, 2018, 15:21:53 »
Код: AutoIt [Выделить]
#include <File.au3>

Global $Dir = "D:\folder A\" ;целевая папка
Global $exceptionsDir = $Dir & "folder AB"
Global $exceptionsFile = $Dir & "Новый текстовый документ.txt" ;не удаляем его из корня

FileDelete($Dir & "deleted_log.txt")

$files_list=_FileListToArrayRec($Dir, "*", 1, 1, 0, 2) ;получаем рекурсивно список всех файлов во всех папках
For $i=1 To UBound($files_list)-1
    If $files_list[$i] <> $exceptionsFile and Not(StringInStr($files_list[$i], $exceptionsDir)) Then ;если это не файл исключения и не в папке исключения
        FileDelete($files_list[$i]) ;то удаляем этот файл
        FileWriteLine($Dir & "deleted_log.txt", $files_list[$i]) ;пишем в лог
    EndIf
Next

$folders_list=_FileListToArray($Dir, "*", 2) ;получаем список папок, вложенных в folder A
For $i=1 To UBound($folders_list)-1
    If ($Dir & $folders_list[$i]) <> $exceptionsDir Then
        DirRemove($Dir & $folders_list[$i], 1) ;удаляем папки и все внутри них
        DirCreate($Dir & $folders_list[$i]) ;создаем пустые папки снова
        FileWriteLine($Dir & "deleted_log.txt", $Dir & $folders_list[$i])
    EndIf
Next
 


Оффлайн NOne [?]

  • Новичок
  • *
  • Сообщений: 9

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: Папка-шлюз
« Ответ #10, Отправлен: Октябрь 22, 2018, 08:11:25 »
Все супер. Тема закрыта.

Русское сообщество AutoIt

Re: Папка-шлюз
« Ответ #10 Отправлен: Октябрь 22, 2018, 08:11:25 »

 

Похожие темы

  Тема / Автор Ответов Последний ответ
0 Ответов
277 Просмотров
Последний ответ Декабрь 05, 2017, 00:24:56
от cdjsend
20 Ответов
945 Просмотров
Последний ответ Июнь 22, 2018, 03:08:34
от Vanguger