Войти

Показать полную графическую версию : Создание и открытие только что созданного файла


Bars66
02-05-2009, 10:52
Создаю скриптик с помощью которого выбирается файл который открывается определёной програмой пример: выбираю файл k790I.fbn он открывается програмой и получается файл k790I.raw как раз таки до этого момента все хорошо а потом надо только что созданый k790i.raw открыть второй програмой. всё хорошо да только имя файла может быть любое.
вот наколякал такой скрипт

$message = "Выберите файл FS."

$var = FileOpenDialog($message, @WindowsDir & "", "Прошивки FS (*.fbn;)", 1)
If @error Then
MsgBox(4096,"","No File(s) chosen")
Else
$var = StringReplace($var, "|", @CRLF)
$var1 = run("babe2raw.exe " & $var)
sleep ( 500)
ProcessClose("babe2raw.exe")

$PID = ProcessExists("babe2raw.exe") ; Will return the PID or 0 if the process isn't found.
If $PID Then ProcessClose($PID)
run ( "SEFStool4.exe"& $var1)




EndIf



вот этот отрезок кода выполняется хорошо (создаётся raw файл)

$message = "Выберите файл FS."

$var = FileOpenDialog($message, @WindowsDir & "", "Прошивки FS (*.fbn;)", 1)
If @error Then
MsgBox(4096,"","No File(s) chosen")
Else
$var = StringReplace($var, "|", @CRLF)
$var1 = run("babe2raw.exe " & $var)
sleep ( 500)
ProcessClose("babe2raw.exe")

$PID = ProcessExists("babe2raw.exe") ; Will return the PID or 0 if the process isn't found.
If $PID Then ProcessClose($PID)
а вот этот отрезок не исполняется
run ( "SEFStool4.exe"& $var1)




EndIf

т.е не открывается программа и вообще ничего неделается
вот что пишет аутоит
>"C:\Program Files\AutoIt3\SciTE\..\autoit3.exe" /ErrorStdOut "C:\FS\1.au3"
>Exit code: 0 Time: 8.546

Creat0R
02-05-2009, 11:36
вот этот отрезок не исполняется »
А зачем там $var1? это PID процесса, и получается что имя запускаемого файла примерно такое: SEFStool4.exe5432

Bars66
02-05-2009, 15:36
надо так чтоб было имя запускаемого файла SEFStool4.exe ***.raw
притом ****.raw это то что было получено с помощью программы babe2raw.exe из файла ***.fbn
проблема в том что название файла может быть СОВЕРШЕННО любым

Creat0R
02-05-2009, 20:42
ритом ****.raw это то что было получено с помощью программы babe2raw.exe »
См. справку по команде Run(). Она возвращает идентификатор процесса, а не то что вернула запускаемая программа.

Bars66
03-05-2009, 11:07
а какую команду надо применять можно отвечать без загодок и намеков

Creat0R
03-05-2009, 11:21
надо только что созданый k790i.raw открыть второй програмой. всё хорошо да только имя файла может быть любое. »
Что значит любое, это имя гинерирует запускаемая программа, или это то-же имя что выбрано в FileOpenDialog но с расширением «.raw»? Если первое то можно попробовать искать файл с FileFindFirstFile/FileFindNextFile, а если второе то всё просто - в переменной $var заменяем расширение на raw:

$message = "Выберите файл FS."

$var = FileOpenDialog($message, @WindowsDir & "", "Прошивки FS (*.fbn;)", 1)

If @error Then
MsgBox(4096, "", "No File(s) chosen")
Else
$var = StringReplace($var, "|", @CRLF)
Run("babe2raw.exe " & $var) ;тут для надёжности можно было бы использовать RunWait().
Sleep(500)

ProcessClose("babe2raw.exe")
$PID = ProcessExists("babe2raw.exe") ; Will return the PID or 0 if the process isn't found.
If $PID Then ProcessClose($PID)

$var = StringTrimRight($var, 3) & "raw"
Run("SEFStool4.exe " & $var)
EndIf

Bars66
03-05-2009, 11:58
ОК все заработало ждите вопросов как запихнут это все в GUI.

Bars66
04-05-2009, 17:34
Надо накалякать еще один скрипт чтобы исполнялся вот эта команда
SEFSTool.exe xxx.fbn C:\FS (где xxx - это имя файла прошивки)



$message = "Выберите файл FS."

$var = FileOpenDialog($message, "c:/fs", "Прошивки FS (*.fbn;)", 1)
DirCreate("C:\FS\")
If @error Then
MsgBox(4096, "", "Файлов не выбрано")
Else
$var = StringReplace($var, "|", @CRLF)
Run("C:\FS\fbn2fs\sefstool.exe" & $var & "C:\FS")


Sleep(10000)

ProcessClose("SEFSTool")
$PID = ProcessExists("SEFSTool") ; Will return the PID or 0 if the process isn't found.
If $PID Then ProcessClose($PID)


EndIf
но почемуто он ничего неделает. (помните имя файла прошивки может быть все время разное!

Elbek
04-05-2009, 18:47
Пробежался по скрипту, и думаю что ошибка в строках:
1.DirCreate("C:\FS\") - Зачем создавать эту директорию, если как я понял по скрипту она уже существует. и если dircreate стоит после fileopendialog при не выбранном файле сообщения об ошибке не будет.
2.Run("C:\FS\fbn2fs\sefstool.exe" & $var & "C:\FS"). - здесь запускается строка run с filename -ом C:\FS\fbn2fs\sefstool.exeС:\dir\xxx.fbnC:\FS

и еще не понятно зачем нужна строка $var = StringReplace($var, "|", @CRLF)
StringReplace не найдет в любом случае символ "|" в $var.

Elbek
06-05-2009, 02:31
Надо накалякать еще один скрипт чтобы исполнялся вот эта команда
SEFSTool.exe xxx.fbn C:\FS (где xxx - это имя файла прошивки) »

исполнятся команда SEFSTool.exe xxx.fbn C:\FS\fbn2fs\ работает только если скрипт лежит в папке C:\FS\fbn2fs\

$message = "Выберите файл FS."

$var = FileOpenDialog($message, "c:/fs", "Прошивки FS (*.fbn;)", 1)

If @error Then
MsgBox(4096, "", "Файлов не выбрано")
Else
$filename = StringRegExp($var, '(?i).*\\(.*\..*)',1) ;дергает с полного пути только само название файла
FileCopy($var, "C:\FS\fbn2fs\" & $filename[0])
Run("sefstool.exe" & $filename[0] & "C:\FS\fbn2fs") ; исполняется вот эта команда SEFSTool.exe xxx.fbn C:\FS\fbn2fs,


Sleep(10000)

ProcessClose("SEFSTool")
$PID = ProcessExists("SEFSTool") ; Will return the PID or 0 if the process isn't found.
If $PID Then ProcessClose($PID)


EndIf

Bars66
09-05-2009, 16:19
Неработает[QUOTE
Цитата Bars66:
Надо накалякать еще один скрипт чтобы исполнялся вот эта команда
SEFSTool.exe xxx.fbn C:\FS (где xxx - это имя файла прошивки) »
исполнятся команда SEFSTool.exe xxx.fbn C:\FS\fbn2fs\ работает только если скрипт лежит в папке C:\FS\fbn2fs\
Код:
$message = "Выберите файл FS."
$var = FileOpenDialog($message, "c:/fs", "Прошивки FS (*.fbn;)", 1)
If @error Then
MsgBox(4096, "", "Файлов не выбрано")
Else
$filename = StringRegExp($var, '(?i).*\\(.*\..*)',1) ;дергает с полного пути только само название файла
FileCopy($var, "C:\FS\fbn2fs\" & $filename[0])
Run("sefstool.exe" & $filename[0] & "C:\FS\fbn2fs") ; исполняется вот эта команда SEFSTool.exe xxx.fbn C:\FS\fbn2fs,
Sleep(10000)
ProcessClose("SEFSTool")
$PID = ProcessExists("SEFSTool") ; Will return the PID or 0 if the process isn't found.
If $PID Then ProcessClose($PID)
EndIf »
Неработает Файл вообще не запускается
вот что написано в инструкции
Далее открываем командную строку (пуск > выполнить > наберите cmd > нажмите Enter) и набираем в командной строке CD\FS, жмем Enter.
После этого набираем команду:
SEFSTool.exe xxx.fbn C:\FS (где xxx - это имя файла прошивки). Жмём Enter.
send() не предлагать

Elbek
10-05-2009, 18:24
Далее открываем командную строку (пуск > выполнить > наберите cmd > нажмите Enter) и набираем в командной строке CD\FS, жмем Enter.
После этого набираем команду:
SEFSTool.exe xxx.fbn C:\FS (где xxx - это имя файла прошивки). Жмём Enter. »

$message = "Выберите файл FS."
$var = FileOpenDialog($message, "c:/fs", "Прошивки FS (*.fbn;)", 1) ; окно выбора файла
$filename = StringRegExp($var, '(?i).*\\(.*\..*)',1); дергает имя файла
Run("sefstool.exe" & " " & $filename[0] & " " & "C:\FS\", "c:\fs") ; переходит в c:\fs\, и запускает SEFSTool.exe xxx.fbn C:\FS




© OSzone.net 2001-2012