Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


Sanja Alone
Снова огромно спасибо за А) и Б)

Цитата:
А где ты В) потерял?
От волнения забыл про него ...

А на счёт Г), я всё же решил немного попариться, и нашёл, я бы сказал, обходное решение...

Вместо того, чтобы копировать файл командами AutoIt'а, я повесил копирование на ком. строку:

Код: Выделить весь код
Run(@ComSpec & " /c copy /y ""c:\File.txt"" ""d:\File.txt""", "", @SW_HIDE)

; Затем заключил в вечную петлю прогресс бар, до тех пор, пока в системе висит процесс “cmd.exe”, т.е это значит, что до тех пор, пока будет делаться копирование...
While 1

	For $i = 5 To 100
	  GUICtrlSetData ($progressbar1, $i)
	  Sleep(1)
	Next
	If Not ProcessExists("cmd.exe") Then ExitLoop
Wend
	GUICtrlSetData ($progressbar1, 0)
Хотя и тут может быть проблема, ведь в этот момент, юзеру может приспичить включить ком. строку для своих целей...
Но и это можно обойти, создав той-же ком. строкой, файл во временной папке %temp%, и по завершению копирования удалять его, а проверку для завершения прогресс бара, делать так:

If Not ProcessExists("cmd.exe") or Not FileExists(@TempDir & "\mark.tmp") Then ExitLoop

Или может есть более надёжный способ, но тогда нужно узнать, возможно ли, и как, проверять когда был запущен процесс (cmd.exe), и если именно этот процесс не существует, тогда выходить с петли. Если кто-то подскажет возможно ли такое, и если да, то как осуществить, то буду очень признателен.
----------------------

У меня есть ещё один вопрос, и тоже в другом направлении -
Нужно взять в переменную, все последние символы идущие после определнного знака у значения другой переменной. Т.е, вот например значение переменной $Var ровняется c:\program files\my programm\test.zip - и нужно чтобы из этой переменной, вернулось такое значение - test.zip - в другую переменную, например в $Var1.
Но заранее, не известно, ни количество слэшей (\) в пути, ни количество символов после последнего слэша. Возможно такое осуществить?
Как я понимаю, тут как-то нужно задействовать одну из вариации команды String, но если честно, то я уже замучался в попытках подобрать подхолящюю для этой цели вариацию, и справка тоже не помогла

Я временно это решил опять-таки ком. строкой :
Код: Выделить весь код
$Var = "c:\program files\my programm\test.zip"

; Беру нужное значение, и вывожу последние его символы после последнего слэша, в файл test.tmp
Run(@ComSpec & " /c for %a in (""" & $Var & "") do echo %~nxa> """ & @ScriptDir & "\test.tmp""")

; Помещаю новое значение (из файла) в переменную $Var1
$Var1 = FileReadLine(@ScriptDir & "\test.tmp", 1)

    MsgBox(0, "", The New Value is: " & $Var1)
FileDelete (@ScriptDir & "\test.tmp")
Но ту проблема в том, что нужно создавать файл, затем удалять его, а в моём случае, таких операции мне приходится делать не раз в моём скрипте, и каждый раз заного создовать файл, а затем удалять его, не лучший вариант... тем более, что скрипт может быть запущен из флешки, а всё время писать на флешку, это её вредит (хотя можно конечно писать файл во времеенный каталог - @TempDir, но всё же не удобно).

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community


Отправлено: 19:50, 03-09-2006 | #348