Что нового

[Файловая система] Проверка нескольких возможных путей и запись в переменную

vladimir_dfx

Новичок
Сообщения
6
Репутация
0
:smile: Добрый день господа форумчане, возник небольшой затык со скриптом. Суть такова - есть 3 -4 пути в системе, где может лежать искомый файл, есть функция FileExist и FileOpenDialog, так вот, не получается написать алгоритм проверки этих самых путей, чтоб при положительном результате, ПУТЬ был записан в ОДНУ переменную $sFilePath, которая используется в FileOpenDialog.
Код:
Global $iPID = ProcessExists("nlnotes.exe")
Global $sFilePath = @UserProfileDir & '\AppData\Local\Lotus\Notes\Data\'
Global $sFilePath = @UserProfileDir & '\еще какой то путь\Data\'
Global $sFilePath = @ProgramFilesDir & '\Другой путь\Notes\Data\'
Global $sFilePath = @ProgramFilesDir & '\IBM\Lotus\Notes\Data\'
Global $iFileExists = FileExists($sFilePath)
; проверяю запущен ли процесс
If $iPID Then
    MSG()
Else
    NOTICE()
EndIf
; закрыть запущенный процесс
Func MSG()
    ProcessClose($iPID)
    NOTICE()
EndFunc   ;==>MSG
; тут нужна функция которая находит этот файл , проверяя несколько путей
Func NOTICE()
    $hOpen = FileOpenDialog("Выбери NOTES.INI", $sFilePath, "(*.ini)")
    ....
EndFunc   ;==>NOTICE


как быть, не дублировать же несколько функций FIleOpenDialog с разными переменными для каждого искомого пути? :scratch:
 

ra4o

AutoIT Гуру
Сообщения
1,165
Репутация
246
Можно все возможные пути записать в массив и перебирая массив, если файл найден - присвоить этот путь переменной "$sFileExists", например так :
Код:
Global $iPID = ProcessExists("nlnotes.exe")
Global $sFilePath[4]
$sFilePath[0] = @UserProfileDir & '\AppData\Local\Lotus\Notes\Data\'
$sFilePath[1] = @UserProfileDir & '\еще какой то путь\Data\'
$sFilePath[2] = @ProgramFilesDir & '\Другой путь\Notes\Data\'
$sFilePath[3] = @ProgramFilesDir & '\IBM\Lotus\Notes\Data\'
Global $sFileExists = ''

;Проверка существования файла 
For $i = 0 To UBound($sFilePath) - 1
	If FileExists($sFilePath[$i]) Then
		$sFileExists = $sFilePath[$i]
		ExitLoop
	EndIf
Next

; проверяю запущен ли процесс
If $iPID Then
	MSG()
Else
	NOTICE()
EndIf
; закрыть запущенный процесс
Func MSG()
	ProcessClose($iPID)
	NOTICE()
EndFunc   ;==>MSG
; тут нужна функция которая находит этот файл , проверяя несколько путей

Func NOTICE()
	$hOpen = FileOpenDialog("Выбери NOTES.INI",$sFileExists, "(*.ini)")
	....
EndFunc   ;==>NOTICE
 

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
как это понял я
Код:
Global $CurPath
Global $iPID = ProcessExists("nlnotes.exe")
Global $sFilePath[4] = [@UserProfileDir & '\AppData\Local\Lotus\Notes\Data\', @UserProfileDir & '\еще какой то путь\Data\', _
		@ProgramFilesDir & '\Другой путь\Notes\Data\', @ProgramFilesDir & '\IBM\Lotus\Notes\Data\']
; проверяю запущен ли процесс
If $iPID Then
	MSG()
Else
	NOTICE()
EndIf
; закрыть запущенный процесс
Func MSG()
	ProcessClose($iPID)
	NOTICE()
EndFunc   ;==>MSG
; тут нужна функция которая находит этот файл , проверяя несколько путей
Func NOTICE()
	For $i = 0 To 3
		If FileExists($sFilePath[$i] & 'notes.ini') Then
			$CurPath = $sFilePath[$i]
			ExitLoop
		EndIf
	Next
	$hOpen = FileOpenDialog("Выбери NOTES.INI", $CurPath, "(*.ini)")
EndFunc   ;==>NOTIC
 
Верх