Показать полную графическую версию : Создание и открытие только что созданного файла
Создаю скриптик с помощью которого выбирается файл который открывается определёной програмой пример: выбираю файл 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
вот этот отрезок не исполняется »
А зачем там $var1? это PID процесса, и получается что имя запускаемого файла примерно такое: SEFStool4.exe5432
надо так чтоб было имя запускаемого файла SEFStool4.exe ***.raw
притом ****.raw это то что было получено с помощью программы babe2raw.exe из файла ***.fbn
проблема в том что название файла может быть СОВЕРШЕННО любым
ритом ****.raw это то что было получено с помощью программы babe2raw.exe »
См. справку по команде Run(). Она возвращает идентификатор процесса, а не то что вернула запускаемая программа.
а какую команду надо применять можно отвечать без загодок и намеков
надо только что созданый 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
ОК все заработало ждите вопросов как запихнут это все в GUI.
Надо накалякать еще один скрипт чтобы исполнялся вот эта команда
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
но почемуто он ничего неделает. (помните имя файла прошивки может быть все время разное!
Пробежался по скрипту, и думаю что ошибка в строках:
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.
Надо накалякать еще один скрипт чтобы исполнялся вот эта команда
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
Неработает[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() не предлагать
Далее открываем командную строку (пуск > выполнить > наберите 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
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.