![]() |
ResHacker.cmd
Пмогите написать батник для ResHacker.exe?
Мне надо чтоб файл лежал как обычно %ProgramFiles%\ResHacker\ResHacker.exe, но при этом корректно выполнялся в cmd.exe Сначала, я просто накатал такое ResHacker.cmd: @start C:\~\Apps\ResHacker\ResHacker.exe "%1" %* ( во-первых я лишь интуитивно понимаю смысл этого - "%*" ) Во-вторых, как мне показалось ResHacker игнорирует вольный ввод, и всё понимает буквально. Вот его справка: Command line scripts have 2 general forms: 1. Single commands: Код:
ResHacker.exe command command_parameters Код:
@if "%1"=="" C:\~\Microsoft.NET\Framework\v2.0.50727\ilasm.exe & goto sh В двух словах, как зделать чтоб в одном случае было "%1" "%2", а в другом "%1" "%2" "%3" "%4" в зависимости от ввода? |
Парни, вы что не умеете скрипты писать, неповерю? Или я что-то опять непонятное пишу?
вот два параметра комманд строки: ResHacker.exe -script scriptfile а вот пять ResHacker.exe -add ExeFile, SaveAsFile, ResourceFile, ResourceMask надо зделать так, чтоб батник передавал программе именно вводимое юзером количество параметров. всего вариантов два! надо как-то это через IF логику организвать, я неумю :( ?? упс, я не прав, вот третьий вариант ещё {-extract ExeFile, ResourceFile, ResourceMask} если параметров нет, то должен просто запуститься бинарь @start %ProgramFiles%\ResHacker\ResHacker.exe впрочем эту строку я и сам добавить могу, это уже не важно. |
Цитата:
|
я не очень Вас понимаю. лишь бы работало! чем проще тем лучше...
у меня есть "традиция", я ко всем программам %ProgramFiles% храню батники в system32 на всякий случай, но обычно там много не надо бывает, просто запуск из cmd.exe А в данном случае ResHacker имеет поддержку коммандной строки и поэтому хочется чтобы всё это тоже работало. И возможно для других прог тоже пригодиться такое знание! И было бы удобно тогда не вводя путь к ResHacker запустить его с параметрами в любой текущей директории... |
Цитата:
Вам наверно проще сделать несколько ярлыков с разными параметрами запуска. |
я всё ввожу в cmd.exe, либо ввод должен осуществляться любым файлом - temp.cmd, (не ResHacker.cmd)
так как будто он работает с обычным ...\ResHacker.exe (просто чтобы не писать каждый раз пути к ...\ResHacker.exe в консоли и в скриптах temp.cmd.) Цитата:
хотя можно написать много вариантов ResHacker1.cmd, и вызывать нужный :) но это же не дело совсем, при этом надо запомнить какой для каких целей )) Кстати, может вот так ....\ResHacker.exe "%1" "%2" "%3" "%4" "%5" "%6" "%7" и ещё и >NULL в конце добавить? Я пока пишу, надо тоже проверить... Разве лишнии параметры не должны игнорироваться? Или они будут как ввод восприниматься? И для чего >null вообще обычно используют? Мой пример выше для ilasm.exe хорошо показывает, что я хочу, но только он не совершенный. ResHacker.cmd - это просто пернаправлятель всего ввода к самому файлу... |
semiono, чем не устраивает:
* добавление путей в Path; * если так любите команду start «xxx» — добавление приложения в подраздел «SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths» разделов HKLM/HKCU; * создание aliases с помощью «doskey.exe»? Зачем, в конце концов, как-то извращаться в пакетном файле, если банальный %* передаст весь набор параметров, сколько бы их ни было: Код:
@echo off Цитата:
|
А так значит моя ошибка была в этом: "%1" %*
Понял! Достаточно только этого: %* Цитата:
\CurrentVersion\App Paths у меня итак всегда включен, так как я всё что только есть всегда использую! Но это для меню Run подходит, но не для cmd.exe. Всмысле, когда нет параметров тогда start самособой актуально и для батников. Спасибо! |
Цитата:
Попробуйте добавить содержимое такого файла в реестр: ResHacker.exe.reg Код:
REGEDIT4 DemoStart.cmd Код:
@echo on Цитата:
Точно так же, ничто не мешает использовать таким образом параметры, хоть в окне «Run», хоть в командной строке в команде «start». Однако, на мой взгляд, для командной строки удобнее пользовать макросы doskey.exe. Создаёте, например, такой макрос: Код:
doskey rh="C:\Program Files\Resource Hacker\ResHacker.exe" $* Код:
rh param1 param2 … paramN Код:
hh.exe mk:@MSITStore:C:\WINDOWS\Help\ntcmds.chm::/doskey.htm Точно так же, если Вы постоянно работаете со скриптами Resource Hacker'а, можно облегчить себе жизнь следующим образом. Для этого следует завести для этих скриптов некое незанятое расширение (например, у меня не занято «.rh»). Зарегистрируем такой тип файлов и ассоциируем его с исполняемым файлом «ResHacker.exe»: Код:
assoc .rh=ResourceHackerScript Код:
start "" "c:\My Scripts\My RH Script.rh" Код:
"C:\Program Files\Resource Hacker\ResHacker.exe" -script "c:\My Scripts\My RH Script.rh" |
Цитата:
Хотя я не понял что значит "" здесь: start "" ResHacker.exe? Может это Вы имели ввиду: start "C:\~\Apps\ResHacker\ResHacker.exe" Ладно это не важно! Хочу пояснить немножко суть всего. Я делаю самодельные инсталяторы программ. При этом взял за правило использовать все фитчи системы. То-есть установленное приложение, любое должно сразу быть готово запускаться из Пуск > Выполнить, из консоли CMD.exe, из значка My Computer итп. особо изощрённых способов не предполагается, но то что заложенно в системе то и используем. Это я к тому что мне много таких батников надо, для всех программ, ResHacker это частный случай. Я подсмотрел в реестре такую запись "%1" %* и не разобравшись стал юзать, но как стало понятно позже, что это не удачный пример... Хотя я задумался, а зачем там в реестре ms так написали? Но похоже, что там был случай с точно определённым вызовом, то-есть точно 1 свитчер плюс %* В моём же случае свитчер может вообще отсутствовать, в этом и проблемма... наверное? Правда не ясно почему неправильно работает при 1 + несколько ключей? Но не важно! Главное я понял такая маска %* работает действительно универсально! Даже не знаю будет ли она обрабатыать пустой ввод, но по любому хорошо уже! App Paths, как говорил уже ранее у меня всегда задействован, но возможно что тут может возникнуть путаница в отношении CMD.exe промпта? Не знаю, но это всё неочевидно. Не ясно какая именно ситуация... Вообще-то батник не противоречит пути в реестре, посему нет проблемы! ? DOSKEY никогда не юзал, весьма интересно, хотя надо почитать, сразу не определиться насколько полезно... Но определённо хорошо то, что это прога из дистрибутива windows, значит всегда есть и везде! Как резюм хочу добавить, что тут ключевым является максимально юзать комманд строку, вместо пакетного управления. Всё что пока можно втиснуть в комманду грубо говоря. offtop: самый интересный с точки зрения исследования комманд строки это Directory Opus, я глянул в хелп и увидел там тучи комманд, но у меня так и не заработало такое "C:\~\Apps\DOpus\dopusrt.exe" /cmd Go "C:\~\system32" OPENINRIGHT (подсказка с его форума) хотя справедливо и такое "C:\~\Apps\DOpus\dopusrt.exe" /cmd Go PATH "C:\~\system32" OPENINRIGHT в справке вообще написано OPENINRIGHT/S одно только радует, это богатство комманд строки в проге! :) |
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
|
Far - это даже и не обсуждается. :)
Но я имел ввиду explorer - подобный "проводник", TotalCmd я не люблю... при всех его фитчах, слишком серо... но спорить нет смысла, просто факт, что dopus 100% заточен под win7 о чём было заявленно. А фар рулит! Yes! даже при моём скромном опыте в шелах Цитата:
Iska, у меня в реестре всегда две записи, может об этом речь? Код:
HKLM,"Software\Microsoft\Windows\CurrentVersion\App Paths\ResHacker.exe",,0x0,"C:\~\Apps\ResHacker\ResHacker.exe" сейчас ещё один косяк исправил, вместо старого моего батника (Inno Setup) Код:
@if "%1"=="" C:\~\Apps\Innosup\ISCC.exe & goto sh Код:
@C:\~\Apps\Innosup\ISCC.exe %* |
Цитата:
Цитата:
Цитата:
Цитата:
|
Цитата:
Недавно я изучал запуск функций из DLL файлов с помощью RUNDLL32.EXE и там есть одна DLL'ка - shell32.dll, которая как раз отвечает и за "Выполнить..." (функция ShellExec_RunDLL). Если создать run.bat, положить в %windir% и вписать следующее: Код:
@echo off Примеры использования: run explorer.exe /separate run http://127.0.0.1 run msconfig |
Время: 19:09. |
Время: 19:09.
© OSzone.net 2001-