Что нового

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

Sergey2210

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

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

VladUs

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

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

Garrett

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

Sergey2210

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

DirCopy
DirCreate
DirGetSize
DirMove
DirRemove


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

Спасибо


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

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


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

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

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8 472
Репутация
2 401
Вообще то 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
Репутация
622
Sergey2210
пользуйся объединением сообщений, вместо того, чтобы лепить один за другим
 

kaster

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

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
 
Верх