Что нового

Проверить, есть ли доступ к @TempDir

Centrinar

Новичок
Сообщения
100
Репутация
1
Иногда при работе с архивами или копировании файлов в @TempDir выдает сообщение что нет доступа. Как можно проверить, есть ли или нет доступа перед копированием?
 

snoitaleR

AutoIT Гуру
Сообщения
855
Репутация
223
Centrinar

Не знаю, насколько практичный метод, но как вариант, думаю, подойдет...

Код:
; НАЧАЛО

 $PATH=@TempDir&"\"&@YEAR&@MON&@MDAY&@HOUR&@MIN&@SEC&".TMP"

 $FILE=FileOpen($PATH,2)

 If $FILE=-1 Then
  MsgBox(0,"","Папка не доступна для копирования...")
 Else
  FileClose($FILE)
  FileDelete($PATH)
  MsgBox(0,"","Папка доступна для копирования...")
 EndIf

; КОНЕЦ
 

svigelf

Знающий
Сообщения
61
Репутация
17
Можно все еще проще сделать...зачем проверять права доступа во временную папку, если можно создать свою? :

Код:
Do
$temp_dir = "C:\temp_" & Random(1, 9, 1) & Random(1, 9, 1) & Random(1, 9, 1) & _
        Random(1, 9, 1) & Random(1, 9, 1) & Random(1, 9, 1) & Random(1, 9, 1) & _
        Random(1, 9, 1) & Random(1, 9, 1) ; Рандомно выбираем имя папки
Until Not FileExists($temp_dir)

DirCreate($temp_dir) ; создание временной папки

;работа с папкой

DirRemove($temp_dir, 1) ; удаление временной папки

Гарантирую, что папка с таким названием отсутствует на диске С :ok:
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
svigelf [?]
Гарантирую, что папка с таким названием отсутствует на диске С
Гарантировать такое невозможно, это Random, отсюда вытекает что совпасть имя всё же может.
Нужно использовать _TempDir():

Код:
#include <File.au3>
$sTmp = _TempFile("C:\", "", "")
DirCreate($sTmp)
 

svigelf

Знающий
Сообщения
61
Репутация
17
Подправил пост выше, теперь точно не будет такой папки, хотя я изобретаю велосипед
 
Верх