Что нового

Проверка на существование папки

Sergey2210

Осваивающий
Сообщения
263
Репутация
31
Версия AutoIt:3.

Как проверять скриптом существует ли определённая папка,если нет то выполняется например функция,что то на подоби
Код:
If Not FileExists('') Then
     ;
EndIf
но с папкой
 

VladUs

Скриптер
Сообщения
621
Репутация
181
Из справки

Код:
If FileExists("D:\") Then
    MsgBox(4096, "", "D: exists.")
Else
    MsgBox(4096,"", "D: does not exist.")
EndIf
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
Sergey2210
Справку читать лень, да? ;)
 
Автор
S

Sergey2210

Осваивающий
Сообщения
263
Репутация
31
У меня в справке только :

DirCopy
DirCreate
DirGetSize
DirMove
DirRemove


Добавлено:
Сообщение автоматически объединено:

Спасибо


Добавлено:
Сообщение автоматически объединено:

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


Добавлено:
Сообщение автоматически объединено:

Всё,догнал как... ;D
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Вообще то FileExists вернёт 1 если по указанному пути существует файл (имя без расширения), поэтому проверять лучше так:

Код:
If StringInStr(FileGetAttrib("C:\Folder"), "D") Then
 
Автор
S

Sergey2210

Осваивающий
Сообщения
263
Репутация
31
Спасибо


Добавлено:
Сообщение автоматически объединено:

Не знаю что выбрать,подскажите тогда что лучше...
Код:
;#NoTrayIcon

;============================ File Exists ============================
; Проверяет на существование файла
;=====================================================================
While 1
	Dim $File[2] = ["Test.txt","Test"]
    $Search = _TracingOn_Existence(1, "Test.txt", '',"__FileCreate",$File) 
Wend

Func __FileCreate($Param) 
    FileWrite($Param[0],$Param[1])
EndFunc

;========================== Process Exists ===========================
; Проверяет на существование процесса
;=====================================================================
#cs
While 1
	Dim $oMsg[4] = [16, @ScriptName, "Просесс не найден", '']
    $Search = _TracingOn_Existence(2, "hh.exe", '',"_oMsg",$oMsg) 
Wend

Func _oMsg($Param) 
    MsgBox($Param[0],$Param[1],$Param[2],$Param[3])
	Exit
EndFunc
#ce

;========================== Folder Exists =============================
; Проверяет на существование папки
;=====================================================================
#cs
While 1
    $Search = _TracingOn_Existence(3, @HomeDrive & '\Test', '',"_FolderCreate", @HomeDrive & '\Test') 
Wend

Func _FolderCreate($Param) 
    DirCreate($Param)
EndFunc
#ce

;========================== Reg key Exists ============================
; Проверяет на существование ключа в реестре
;=====================================================================
#cs
While 1
	Dim $Reg[4] = ["HKEY_LOCAL_MACHINE\SOFTWARE\","Test","REG_SZ","Example"]
    $Search = _TracingOn_Existence(4, "HKEY_LOCAL_MACHINE\SOFTWARE\", "Test","_RegCreate",$Reg) 
Wend

Func _RegCreate($Param) 
    RegWrite($Param[0],$Param[1],$Param[2],$Param[3])
EndFunc
#ce

;============================ File Exists ============================
; Либо всё тоже самое но без вызова функции и создания массива
;=====================================================================
#cs
While 1
    $Search = _TracingOn_Existence(1, "Test.txt") 
	If $Search = 0 Then
		ConsoleWrite("Не удаётся найти файл" & @CRLF)
		Exit
	Else
    If $Search = 1 Then	
		ConsoleWrite("Файл на месте" & @CRLF)
	EndIf
    EndIf	
Wend
#ce


; #FUNCTION# ====================================================================================================================
; Name...........: _TracingOn_Existence
; Description....: Следим за файлом, процессом, папкой, ключём реестра
; Syntax.........: _TracingOn_Existence($__Index_Exists, $__sExists_Tracking, $__sExists_Value = '', $__sFunction_Call = '', $__sFunction_Param = '', $__sTime_Tracking = 100)
; Parameters ....: $__Index_Exists      - Следить за: (1 = файл, 2 = процесс, 3 = папка, 4 = ключь реестра)
;				   $__sExists_Tracking  - Файл, процесс, папка, ключь реестра за которыми хотим следить
;                  $__sExists_Value     - Ключ реестра
;                  $__sFunction_Call    - По надобности можно вызвать функцию
;                  $__sFunction_Param   - Специальный массив, передаётся в вызваную функцию 
;                  $__sTime_Tracking    - Устанавливает интервал проверки  (стандартно 100)
; Return values .: Если существует то - 1 
;                  Иначе - 0
; Author ........: Sergey2210 
; Modified.......:
; Remarks .......:
; Related .......:
; Link ..........: http://autoit-script.ru/index.php?action=profile;u=3501
; E-mail.........: [email protected]
; Example .......: Yes
; ===============================================================================================================================
Func _TracingOn_Existence($__Index_Exists, $__sExists_Tracking, $__sExists_Value = '', $__sFunction_Call = '', $__sFunction_Param = '', $__sTime_Tracking = 100)
	
	Local $__sResult_Tracking = 0 ; Результат

	Sleep($__sTime_Tracking) ; Интервал проверки 
	
	If $__Index_Exists = 1 Then $__sExists = FileExists($__sExists_Tracking)                ; Проверяет наличие файла
	If $__Index_Exists = 2 Then $__sExists = ProcessExists($__sExists_Tracking)             ; Проверяет наличие процесса
	If $__Index_Exists = 3 Then $__sExists = FileExists($__sExists_Tracking)                ; Проверяет наличие папки
	If $__Index_Exists = 4 Then $__sExists = RegRead($__sExists_Tracking, $__sExists_Value) ; Проверяет наличие ключа

	If Not $__sExists Then ; Проверяет на существование
		$__sResult_Tracking = 0 ; Если не существует то результат = 0 
		If $__sFunction_Call <> '' Then Call($__sFunction_Call, $__sFunction_Param) ; Вызов функции
	Else
		$__sResult_Tracking = 1	; Если существует то результат = 1
	EndIf

	Return $__sResult_Tracking ; Возвращает в начало функции
	
EndFunc   ;==> _TracingOn_Existence
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
626
Sergey2210
пользуйся объединением сообщений, вместо того, чтобы лепить один за другим
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
626

scenarist

AUTOIT-FOREVER
Сообщения
7
Репутация
0
Код:
"If StringInStr(FileGetAttrib("C:\Folder"), "D") Then..."
-Ну уж если более надежного способа нет, то...
Код:
func folderexists($folder)
$fso=objcreate("Scripting.Filesystemobject");Подключаем объект файловой системы
if $fso.folderexists($folder)=true then; если аргумент-папка, теперь
return true; вернуть: "истина"
else; иначе
return false; вернуть "ложь"
endif
endfunc
 

armenxxx1

Продвинутый
Сообщения
155
Репутация
56
Код:
If Not FileExists(@ScriptDir & "\folder") Then
    DirCreate(@ScriptDir & "\folder")
EndIf
 
Верх