Что нового

Поиск каталога в корневом каталоге без просмотра подкаталогов

InnI

AutoIT Гуру
Сообщения
4,922
Репутация
1,432
почему он подкаталоги удаляет и не восстанавливает?
Функция _FileListToArray не выполняет рекурсивный поиск (ведь именно эту функцию мы здесь обсуждаем?). Поэтому скрипт работает в соответствие с вашим пожеланием "что бы скрипт удалял папки записанные в массив". Вот какие в массив записаны, те и удаляет. Подкаталоги в массив не записаны - можете проверить.
Сообщение автоматически объединено:

Даже в названии темы указано: без просмотра подкаталогов
 
Последнее редактирование:

IMStrelcov

CTPEJIbLLOB
Сообщения
258
Репутация
66
Спаисбо, работает! , но почему он подкаталоги удаляет и не восстанавливает?
Код:
$sDir = 'D:\System\Desktop\Windimate'

DeleteAllFiles_($sDir)

Func DeleteAllFiles_($_sDir)
   Local $_hList, $_sFile
   $_hList = FileFindFirstFile($_sDir&'\*.*')
   While 1
      $_sFile = FileFindNextFile($_hList)
      If @error Then ExitLoop
      ;If StringInStr(FileGetAttrib($_sDir&'\'&$_sFile), 'D') Then
      If @extended Then
         DeleteAllFiles_($_sDir&'\'&$_sFile)
      Else
         FileDelete($_sDir&'\'&$_sFile)
      EndIf
   WEnd
EndFunc
 

InnI

AutoIT Гуру
Сообщения
4,922
Репутация
1,432
Написать собственную рекурсию - это, конечно, круто. Тут не поспоришь :good:
Но, во-первых, вот при таком раскладе
Код:
$sDir = @ScriptDir
будет удалён и сам скрипт и все файлы в папке со скриптом. Что не есть гут.

А, во-вторых, всё уже придумано до нас
Код:
#include <File.au3>

$FileList = _FileListToArrayRec(@ScriptDir, "*", 2, 1, 0, 2)
If Not IsArray($FileList) Then Exit
For $i = 1 To $FileList[0]
  FileDelete($FileList[$i])
Next
 
Верх