Что нового

[РЕШЕНО][Данные, строки] Добавление спе.символа "\" к пути каталога

gberc

Новичок
Сообщения
6
Репутация
0
Всех приветствую.Поиском пользовался и сам пытался решить проблему, но безрезультатно. Собственно проблем нескольо
Поэтому прошу помощи у комъюнити.

Скрипт проверяет наличие файла в указанном каталоге (файл ищется по маске или по имени).
1. Когда я указываю каталог через интерфейс проводника, мне нужно чтобы в конце пути добавлялся символ "\" - то есть строка должна выглядеть так C:\folder\. Как добавить этот символ к пути?
2. Если указана маска "*.*", то скрипт все время обнаруживает файл, хотя папка пуста. Как сделать чтоб эта маска работала с файлами?
3. В коде я использую функцию sleep, без нее этот маленький скрипт отжирает на себя 25% нагрузки ЦП от моего i3. Почему такая маленькая программа такая ресурсоемкая получилась?

Код:
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=c:\users\robotik\desktop\1\Форма для проверки файлов.kxf
$Form1_1 = GUICreate("Проверка наличия файлов и каталогов", 357, 174, 192, 124)
$Input1 = GUICtrlCreateInput("пример: C:\New_folder\*.txt", 8, 59, 337, 24)
GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif")
$Label1 = GUICtrlCreateLabel("Введите путь к каталогу для проверки", 8, 5, 338, 24)
GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")
$Button_open = GUICtrlCreateButton("Открыть каталог", 8, 91, 339, 25, $WS_GROUP)
GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif")
$Button_check = GUICtrlCreateButton("Начать проверку", 8, 123, 339, 25, $WS_GROUP)
GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif")
$Label3 = GUICtrlCreateLabel("Если не указывать расширение файла, то будет выполняться", 8, 24, 319, 17)
$Label4 = GUICtrlCreateLabel("проверка наличия указанного каталога", 9, 37, 206, 17)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

; главный цикл программы
While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE ; обработка команды закрытия окна (работает, только до входа в цикл)
			Exit
;################################################ кнопка ОТКРЫТЬ КАТАЛОГ
		Case $Button_open
$var_path = FileSelectFolder("Выберите каталог", "")
GUICtrlSetData($Input1, $var_path)


;################################################ кнопка НАЧАТЬ ПРОВЕРКУ
		Case $Button_check ; обработка каманды кнопки "Начать проверку"
				While 1 ; бесконечный цикл проверки наличия файла, запускается по кнопке "Начать проверку"
$var_path = GUICtrlRead($Input1) ;функция для считывания введенных данных
If FileExists($var_path) Then ; если файл присутствует по указанному пути, то выдать сообщение и сделать задержку 30 секунд
    MsgBox(0, '', 'Появился файл!')
	Sleep(30000)
						Else
	Sleep(30000) ; если файл отсутствует по указанному пути, то сделать задержку 30 секунд , чтобы не просаживать ЦП
EndIf
				WEnd
;################################################

	EndSwitch
WEnd


Заранее спасибо.
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
624
Re: [Данные, строки] Добавление спе.символа "\" к пути каталога

так в чем вопрос? почему так грузится процессор?
для проверки, вот еще короче код, а грузит ядро на полную
Код:
While 1
WEnd
 
Автор
G

gberc

Новичок
Сообщения
6
Репутация
0
Re: [Данные, строки] Добавление спе.символа "\" к пути каталога

Добавил конкретные вопросы.
То есть вопрос с производительностью я решил правильно?
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
624
Re: [Данные, строки] Добавление спе.символа "\" к пути каталога

gberc [?]
Как добавить этот символ к пути?
Код:
$path = $old_path & '\'

Как сделать чтоб эта маска работала с файлами?
если мне не изменяет память, то FileExists не работает с масками. надо указывать конкретные пути для файлов или папок.
[?]
вопрос с производительностью я решил правильно?
да, использование паузы для быстровыполняемых циклов стандартное решение
 
Автор
G

gberc

Новичок
Сообщения
6
Репутация
0
Re: [Данные, строки] Добавление спе.символа "\" к пути каталога

Спасибо, Kaster.
На все вопросы я получил ответы.
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
624
Re: [Данные, строки] Добавление спе.символа "\" к пути каталога

{TopicSolvedInfo}
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,670
Репутация
2,463
Re: [Данные, строки] Добавление спе.символа "\" к пути каталога

Kaster [?]
если мне не изменяет память, то FileExists не работает с масками
Работает:
Код:
ConsoleWrite(FileExists("c:\*.bat") & @LF)


gberc [?]
Если указана маска "*.*", то скрипт все время обнаруживает файл, хотя папка пуста. Как сделать чтоб эта маска работала с файлами?
Можно просто проверить не пуста ли папка:

Код:
ConsoleWrite(_DirIsEmpty("c:\temp") & @LF)

Func _DirIsEmpty($sPath)
	If Not StringInStr(FileGetAttrib($sPath), "D") Then
		Return SetError(1, 0, 0)
	EndIf
	
	Local $hSearch = FileFindFirstFile($sPath & "\*")
	Local $iRet = @error
	
	FileClose($hSearch)
	Return $iRet
EndFunc
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
624
Re: [Данные, строки] Добавление спе.символа "\" к пути каталога

CreatoR [?]
а что же он находит при пустой папке? :blink:
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,670
Репутация
2,463
Re: [Данные, строки] Добавление спе.символа "\" к пути каталога

Kaster [?]
а что же он находит при пустой папке?
Хороший вопрос, если мне не изменяет память, то в каждой папке есть некий файл-идентификатор, вот его может и определяет.
Также есть версия что *.* интерпритируется как .. (переход на уровень выше), отсюда и существование пути.
 
Верх