@start MyLoader.exe + {PARAMETERS == %1 %*} как?
Помогите!
Я написал обычный загрузчик для проги, смысл в том, что он делает кое какие дополнительные действия и потом обычно запускает модуль: Код:
ShellExecute("HprSnap6.exe", "", @ScriptDir) %SystemRoot%\system32\HprSnap.cmd: Код:
@start C:\~\Apps\HprSnap\HprSnap6.exe "%1" %* # HprSnap C:\zzz.png К сожалению такое не работает :) ShellExecute("HprSnap6.exe", "%1", @ScriptDir) А что такое opt_flag < Run ( "filename" [, "workingdir" [, show_flag[, opt_flag ]]] ) ? Я не очень понимаю где и для чего юзать Run либо ShellExecute... Очень похожие две функции. Какое решение может быть есть? Я ещё объясню если не очень понятно... |
ShellExecute позволяет открывать различные файлы. Также, как вы действуете с ними обычно: открыть, изменить, печать, открыть свойства.
Run позволяет запускать исполняемые файлы. А здесь надо просто с параметрами командной строки работать. Переменная $CmdLine[0] содержит число параметров в командной строке. $CmdLine[1] - первый параметр. $CmdLine[n] - n-ый параметр. $CmdLineRaw - содержит всю строку параметров. ShellExecute("HprSnap6.exe", $CmdLineRaw, @ScriptDir) Запустит HprSnap6.exe с параметрами, которые были переданы скрипту при запуске. |
Цитата:
|
Сам скрипт выполнит приложение с ошибкой. Надо компилить, так как скрипт сам есть параметр :)
Это у меня похожие ошибки были с командами *.msi когда я не врубался, что это лишь правая часть для msiexec.exe Спасиб! Кажись работает! |
Почему-то
Код:
ShellExecute("HprSnap6.exe", $CmdLineRaw, @ScriptDir) батник: @start C:\~\Apps\HprSnap\script.exe "%1" %* хотя сам скрипт.EXE напрямую кликом запускает прогу "тихо" и с параметрами тоже запускает корректно. смысл ошибки - файл не найден, ну типа ожидается, что чё-то на входе должно быть, чего там нет. хм. может батник кривой для этой задачи... |
semiono, Возможно параметры нужно в кавычки заключать? Хотя проблема для меня звучит смутно.
|
Какой-то нонсенс! Когда на вход попадает file.png то скрипт это корректно передаёт через маску "%1"
Но когда на входе пусто, то скрипт эту же маску считает за файл и пытается загрузить %1 как будто это картинка! Правда я одно не понимаю это происходит на входе скрипта или на входе HprSnap6.exe приложения которое скрипт запускает с передачей параметров. Хотя не легче если б знал. |
Цитата:
|
Я тоже не экстрасенс. Может быть вы просто не проверяете в скрипте, есть параметры или их нет?
|
Да не проверяю, потому что не умею. Для меня это именно трудная задача...
Логически мыслить могу, но надо ещё и опыт в скрипте иметь. Параллельно на ассемблере пытался тоже это разрешить :) И надо сказать не трудней чем на автоите. Но косяков тоже понаделал... Всё верно, самое главное проверить, есть ли на входе параметры или нет и соответственно этому запускать программу, либо с переданными в неё параметрами либо наголо как есть! Я извиняюсь, но я много итак написал чтоб объяснить, скрипт не могу, так как я сам это спрашиваю. :) Если честно, то я не очень понял как это использовать $CmdLine[1] - первый параметр. $CmdLine[n] - n-ый параметр. Потому как кроме $CmdLineRaw и $CmdLine[0] в ShellExecute("HprSnap6.exe", $CmdLineRaw, @ScriptDir) ничего не впихнуть. Через & чтоли? Но их связки тоже либо мне не понятно либо смысл какой! $CmdLine[0] & $CmdLine[1] & $CmdLine[2] когда в документации чё-то сказанно типа 0 - это сам файл чтоль... Вообщем я это не осилил. Sylver Dragon, подскажи как проверять? |
А можно узнать API используемые в автоит?
На msdn из функций директорий всего две - GetCurrentDirectory, SetCurrentDirectory. А как тогда получается @ScriptDir ? Что за WinAPI это? |
$CmdLine[0] - число параметров!
Пример: С:\Test.exe /param1 -param2 /para3 .4 "param 5" $CmdLine[0] = 5 $CmdLine[1] = /param1 $CmdLine[2] = -param2 $CmdLine[3] = /para3 $CmdLine[4] = .4 $CmdLine[5] = param 5 $CmdLineRaw = /param1 -param2 /para3 .4 "param 5" @ScriptDir? Небось просто получает путь к файлу скрипта, а потом обрезает его. |
блин, я даже сейчас призадумался!
$CmdLine[0] - число параметров! $CmdLine[0] = 5 как пять, когда это ноль! и тока дошло, этож индекс а не значение, вот я туплю! :) теперя я понимаю что меня тоже не понимают :) Sylver Dragon, а ты про проверку что-то говорил? А можно чекнуть, когда параметров в команд строке нету, чтобы $CmdLineRaw убрать на тот случай? If $CmdLineRaw = 0 then ... ShellExecute(...."") чтоли так? А хотя это идея, уже сам понял... |
Код:
If $CmdLine[0] > 0 Then |
proxy, превед :)
|
Время: 10:47. |
Время: 10:47.
© OSzone.net 2001-