Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] ResHacker.cmd

Ответить
Настройки темы
CMD/BAT - [решено] ResHacker.cmd

Аватара для semiono

Ветеран


Сообщения: 842
Благодарности: 33

Профиль | Отправить PM | Цитировать


Пмогите написать батник для 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
2. Multiple commands:
	ResHacker.exe -script scriptfile


Single Commands:

command and command_parameters:
   -add           ExeFile, SaveAsFile, ResourceFile, ResourceMask
   -addskip       ExeFile, SaveAsFile, ResourceFile, ResourceMask
   -addoverwrite  ExeFile, SaveAsFile, ResourceFile, ResourceMask
   -modify        ExeFile, SaveAsFile, ResourceFile, ResourceMask

   -extract       ExeFile, ResourceFile, ResourceMask
   -delete        ExeFile, SaveAsFile, ResourceMask
Нужно нечто такое
Код: Выделить весь код
@if "%1"=="" C:\~\Microsoft.NET\Framework\v2.0.50727\ilasm.exe & goto sh
@C:\~\Microsoft.NET\Framework\v2.0.50727\ilasm.exe "%1" %*
:sh
чтобы переменное количество параметров передавалось соответственно...

В двух словах, как зделать чтоб в одном случае было "%1" "%2", а в другом "%1" "%2" "%3" "%4" в зависимости от ввода?

-------
Полезное сообщение


Отправлено: 20:10, 26-11-2009

 

Аватара для semiono

Ветеран


Сообщения: 842
Благодарности: 33

Профиль | Отправить PM | Цитировать


Парни, вы что не умеете скрипты писать, неповерю? Или я что-то опять непонятное пишу?
вот два параметра комманд строки:
ResHacker.exe -script scriptfile
а вот пять
ResHacker.exe -add ExeFile, SaveAsFile, ResourceFile, ResourceMask
надо зделать так, чтоб батник передавал программе именно вводимое юзером количество параметров.
всего вариантов два! надо как-то это через IF логику организвать, я неумю
??
упс, я не прав, вот третьий вариант ещё {-extract ExeFile, ResourceFile, ResourceMask}
если параметров нет, то должен просто запуститься бинарь
@start %ProgramFiles%\ResHacker\ResHacker.exe
впрочем эту строку я и сам добавить могу, это уже не важно.

-------
Полезное сообщение


Отправлено: 18:17, 27-11-2009 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Deadooshka


Сообщения: 2512
Благодарности: 690

Профиль | Отправить PM | Цитировать


Цитата semiono:
чтоб батник передавал программе именно вводимое юзером количество параметров. »
через параметры командной строки батника или путем запроса ввода с клавиатуры?

Отправлено: 03:48, 28-11-2009 | #3


Аватара для semiono

Ветеран


Сообщения: 842
Благодарности: 33

Профиль | Отправить PM | Цитировать


я не очень Вас понимаю. лишь бы работало! чем проще тем лучше...
у меня есть "традиция", я ко всем программам %ProgramFiles% храню батники в system32 на всякий случай,
но обычно там много не надо бывает, просто запуск из cmd.exe
А в данном случае ResHacker имеет поддержку коммандной строки и поэтому хочется чтобы всё это тоже работало. И возможно для других прог тоже пригодиться такое знание!
И было бы удобно тогда не вводя путь к ResHacker запустить его с параметрами в любой текущей директории...

-------
Полезное сообщение


Отправлено: 16:40, 28-11-2009 | #4


Deadooshka


Сообщения: 2512
Благодарности: 690

Профиль | Отправить PM | Цитировать


Цитата semiono:
я не очень Вас понимаю. лишь бы работало! »
как параметры батнику то передаются? При запуске с параметрами (file.bat /параметр) или после запуска батника в окно нужно что-то вводить?

Вам наверно проще сделать несколько ярлыков с разными параметрами запуска.
Это сообщение посчитали полезным следующие участники:

Отправлено: 18:34, 28-11-2009 | #5


Аватара для semiono

Ветеран


Сообщения: 842
Благодарности: 33

Профиль | Отправить PM | Цитировать


я всё ввожу в cmd.exe, либо ввод должен осуществляться любым файлом - temp.cmd, (не ResHacker.cmd)
так как будто он работает с обычным ...\ResHacker.exe
(просто чтобы не писать каждый раз пути к ...\ResHacker.exe в консоли и в скриптах temp.cmd.)
Цитата Sham:
Вам наверно проще сделать несколько ярлыков с разными параметрами запуска. »
это как бы графический метод для десктопа! меня же интересует работа с консолью.
хотя можно написать много вариантов ResHacker1.cmd, и вызывать нужный
но это же не дело совсем, при этом надо запомнить какой для каких целей ))

Кстати, может вот так ....\ResHacker.exe "%1" "%2" "%3" "%4" "%5" "%6" "%7" и ещё и >NULL в конце добавить? Я пока пишу, надо тоже проверить... Разве лишнии параметры не должны игнорироваться? Или они будут как ввод восприниматься?
И для чего >null вообще обычно используют?

Мой пример выше для ilasm.exe хорошо показывает, что я хочу, но только он не совершенный.
ResHacker.cmd - это просто пернаправлятель всего ввода к самому файлу...

-------
Полезное сообщение


Последний раз редактировалось semiono, 28-11-2009 в 19:08.


Отправлено: 18:49, 28-11-2009 | #6


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


semiono, чем не устраивает:
* добавление путей в Path;
* если так любите команду start «xxx» — добавление приложения в подраздел «SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths» разделов HKLM/HKCU;
* создание aliases с помощью «doskey.exe»?

Зачем, в конце концов, как-то извращаться в пакетном файле, если банальный %* передаст весь набор параметров, сколько бы их ни было:
Код: Выделить весь код
@echo off

echo.%*
"C:\Program Files\Resource Hacker\ResHacker.exe" %*
Цитата:
Код: Выделить весь код
C:\Песочница\39>ResHack.cmd "1" 2 "3 4"
"1" 2 "3 4"
Это сообщение посчитали полезным следующие участники:

Отправлено: 19:40, 28-11-2009 | #7


Аватара для semiono

Ветеран


Сообщения: 842
Благодарности: 33

Профиль | Отправить PM | Цитировать


А так значит моя ошибка была в этом: "%1" %*
Понял! Достаточно только этого: %*
Цитата Iska:
Зачем, в конце концов, как-то извращаться в пакетном файле, если банальный %* »
Вот и я об этом! Ну я же не знал.

\CurrentVersion\App Paths у меня итак всегда включен, так как я всё что только есть всегда использую!
Но это для меню Run подходит, но не для cmd.exe.
Всмысле, когда нет параметров тогда start самособой актуально и для батников.

Спасибо!

-------
Полезное сообщение


Отправлено: 20:52, 28-11-2009 | #8


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата semiono:
\CurrentVersion\App Paths у меня итак всегда включен, так как я всё что только есть всегда использую!
Но это для меню Run подходит, но не для cmd.exe.
Всмысле, когда нет параметров тогда start самособой актуально и для батников.
Вы не правы. Команда «start» использует «App Paths» (я подозреваю, что тут пользуется механизм ShellExecute(), но специально не проверял).

Попробуйте добавить содержимое такого файла в реестр:
ResHacker.exe.reg
Код: Выделить весь код
REGEDIT4

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\ResHacker.exe]
@="C:\\Program Files\\Resource Hacker\\ResHacker.exe"
и попробуйте выполнить такой пакетный файл:
DemoStart.cmd
Код: Выделить весь код
@echo on
ResHacker.exe
start "" ResHacker.exe
На попытку выполнить «ResHacker.exe» из пакетного файла — Вы увидите отлуп:
Цитата:
"ResHacker.exe" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.
а вот «start "" ResHacker.exe» запустит исполняемый файл, указанный в параметре по умолчанию в «HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\ResHacker.exe».

Точно так же, ничто не мешает использовать таким образом параметры, хоть в окне «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
и в: CMD/BAT: Макросы DOSKEY — полезная вещь, которую не многие используют.

Точно так же, если Вы постоянно работаете со скриптами Resource Hacker'а, можно облегчить себе жизнь следующим образом. Для этого следует завести для этих скриптов некое незанятое расширение (например, у меня не занято «.rh»). Зарегистрируем такой тип файлов и ассоциируем его с исполняемым файлом «ResHacker.exe»:
Код: Выделить весь код
assoc .rh=ResourceHackerScript
ftype ResourceHackerScript="C:\Program Files\Resource Hacker\ResHacker.exe" -script "%1"
В принципе, этого уже достаточно для работы (можно ещё, конечно, поменять иконку, дать описание, создать дополнительные глаголы «Edit/Print/etc.» и т.п., но сие уже рюшечки). Создаёте некий скрипт для Resource Hacker'а, даёте ему расширение «.rh» (например «c:\My Scripts\My RH Script.rh»). После этого будет, например, работать такая команда:
Код: Выделить весь код
start "" "c:\My Scripts\My RH Script.rh"
При этом будет опосредованно запущена такая команда:
Код: Выделить весь код
"C:\Program Files\Resource Hacker\ResHacker.exe" -script "c:\My Scripts\My RH Script.rh"
Это сообщение посчитали полезным следующие участники:

Отправлено: 17:47, 29-11-2009 | #9


Аватара для semiono

Ветеран


Сообщения: 842
Благодарности: 33

Профиль | Отправить PM | Цитировать


Цитата Iska:
На попытку выполнить «ResHacker.exe» из пакетного файла — Вы увидите отлуп: »
Вы имеете ввиду Ваш пакетный файл DemoStart.cmd, у меня открывается ResHacker.exe норамльно!
Хотя я не понял что значит "" здесь: 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
одно только радует, это богатство комманд строки в проге!

-------
Полезное сообщение


Последний раз редактировалось semiono, 01-12-2009 в 19:31.


Отправлено: 18:52, 01-12-2009 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] ResHacker.cmd

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Помогите запустить CMD-файл из CMD-файла с параметрами Oleg48 Скриптовые языки администрирования Windows 2 18-11-2009 11:08
CMD/BAT - [решено] Создать сценарий для ResHacker. E-mpty Скриптовые языки администрирования Windows 3 10-10-2009 21:37
[решено] AutoIt и ResHacker ya158 AutoIt 22 29-09-2009 00:22
CMD/BAT - [решено] FTP + CMD Art644 Скриптовые языки администрирования Windows 6 18-05-2009 18:54
Помогите пожалуйста не срабатывает команда из*cmd файла запускаемого из RanOnceEx.cmd vovchiku Автоматическая установка Windows 2000/XP/2003 6 25-09-2007 23:38




 
Переход