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, но всё же не удобно).