CMD/BAT - [решено] Запуск скрипта как Shell Command
-
stuermer01
CMD/BAT - [решено] Запуск скрипта как Shell Command
Добрый день.
Есть такой скрипт, который записан в реестре в контекстном меню HKEY_CLASSES_ROOT\Drive\shell\ как command . Он оттуда работает.
Скрытый текст
[spoiler]cmd.exe /q /c FOR /F "usebackq" %%i IN ('%V') DO ECHO Подготовка %%~di к безопасному извлечению...ждите... & TITLE Безопасное извлечение диска %%~di & RemoveDrive.exe %%~di && (TITLE Извлечение накопителя успешно завершено) & PAUSE[/spoiler]
Теперь нужно его же запустить из .cmd файла. Просто , если скопировать его в .cmd и убрать "cmd.exe /q /c" - окно пропадает даже если вписать pause.
Как сделать чтоб запускался из пакетного файла?
Есть такой скрипт, который записан в реестре в контекстном меню HKEY_CLASSES_ROOT\Drive\shell\ как command . Он оттуда работает.
Скрытый текст
[spoiler]cmd.exe /q /c FOR /F "usebackq" %%i IN ('%V') DO ECHO Подготовка %%~di к безопасному извлечению...ждите... & TITLE Безопасное извлечение диска %%~di & RemoveDrive.exe %%~di && (TITLE Извлечение накопителя успешно завершено) & PAUSE[/spoiler]
Теперь нужно его же запустить из .cmd файла. Просто , если скопировать его в .cmd и убрать "cmd.exe /q /c" - окно пропадает даже если вписать pause.
Как сделать чтоб запускался из пакетного файла?
-
Serguei Kouzmine
Re: CMD/BAT - [решено] Запуск скрипта как Shell Command
замените
HTML код:
на
HTML код:
в
Код:
и увидите вообще все
и узнайте что передается shell ом в переменной
Код:
-
этого вам никто не скажет - это берется из конткста выполнения того что вы автоматизируете
типа как в {00021400-0000-0000-C000-000000000046}
Код:
HTML код:
Код: Выделить всё
/cна
HTML код:
Код: Выделить всё
/kв
Код:
Код: Выделить всё
cmd.exe /q /cи увидите вообще все
и узнайте что передается shell ом в переменной
Код:
Код: Выделить всё
%V-
этого вам никто не скажет - это берется из конткста выполнения того что вы автоматизируете
типа как в {00021400-0000-0000-C000-000000000046}
Код:
Код: Выделить всё
cmd.exe /s /k pushd "%V"-
stuermer01
Re: CMD/BAT - [решено] Запуск скрипта как Shell Command
Не понял. Это скрипт безопасного извлечения флешки при помощи внешней утилиты RemoveDrive.exe. Скрипт записан через реестр и вызывается через контекстное меню кнопки диска (флешки). Работает так нормально, но надо переделать, чтоб работало из пакетника на флешке.
Заменил /с на /k , ничего не изменилось, окошко сразу пропадает.
Скрытый текст
[spoiler]cmd.exe /s /k pushd "%V"[/spoiler]
При запуске с флешки выдает: "Системе не удается найти указанный путь."
Заменил /с на /k , ничего не изменилось, окошко сразу пропадает.
Скрытый текст
[spoiler]cmd.exe /s /k pushd "%V"[/spoiler]
При запуске с флешки выдает: "Системе не удается найти указанный путь."
-
Serguei Kouzmine
Re: CMD/BAT - [решено] Запуск скрипта как Shell Command
имелось в виду- в вашей и многих других командах реестра %V это параметр
без правильного параметра никакой скрипт не будет работать
без правильного параметра никакой скрипт не будет работать
-
Serguei Kouzmine
-
stuermer01
Re: CMD/BAT - [решено] Запуск скрипта как Shell Command
stuermer01, когда Вы делаете:
Цитата stuermer01:
вызывается через контекстное меню кнопки диска (флешки).
вместо %V Проводник подставляет букву устройства.
Всё, что Вам надо — запускать RemoveDrive.exe с потребным параметром. Который теперь будете определять Вы, а не Проводник. Например, создать по ярлыку на каждое возможное имя устройства:
RemoveDrive.exe D:
RemoveDrive.exe E:
RemoveDrive.exe F:
и т.д. и каждый раз «ручками» выбирать потребный ярлык
.
А можно не страдать, а просто взять Far Manager и пользовать Shift-Del на устройстве:
Цитата:
Комбинация Shift+Del используется для подготовки к безопасному извлечению запоминающих устройств для USB. Если диск, для которого применяется функция извлечения, является одной из flash-карт, вставленных в картридер с поддержкой нескольких flash-карт, то будет отключён сам картридер.
Цитата stuermer01:
вызывается через контекстное меню кнопки диска (флешки).
CMD/BAT - [решено] Запуск скрипта как Shell Command
вместо %V Проводник подставляет букву устройства.
Всё, что Вам надо — запускать RemoveDrive.exe с потребным параметром. Который теперь будете определять Вы, а не Проводник. Например, создать по ярлыку на каждое возможное имя устройства:
RemoveDrive.exe D:
RemoveDrive.exe E:
RemoveDrive.exe F:
и т.д. и каждый раз «ручками» выбирать потребный ярлык
.А можно не страдать, а просто взять Far Manager и пользовать Shift-Del на устройстве:
Цитата:
Комбинация Shift+Del используется для подготовки к безопасному извлечению запоминающих устройств для USB. Если диск, для которого применяется функция извлечения, является одной из flash-карт, вставленных в картридер с поддержкой нескольких flash-карт, то будет отключён сам картридер.
-
stuermer01
Re: CMD/BAT - [решено] Запуск скрипта как Shell Command
Цитата Iska:
Всё, что Вам надо — запускать RemoveDrive.exe с потребным параметром. Который теперь будете определять Вы, а не Проводник. Например, создать по ярлыку на каждое возможное имя устройства:
RemoveDrive.exe D:
RemoveDrive.exe E:
RemoveDrive.exe F:
Да, тоже сегодня утром пришла эта идея! Все гениальное - просто!

Всё, что Вам надо — запускать RemoveDrive.exe с потребным параметром. Который теперь будете определять Вы, а не Проводник. Например, создать по ярлыку на каждое возможное имя устройства:
RemoveDrive.exe D:
RemoveDrive.exe E:
RemoveDrive.exe F:
CMD/BAT - [решено] Запуск скрипта как Shell Command
Да, тоже сегодня утром пришла эта идея! Все гениальное - просто!

-
megaloman
Re: CMD/BAT - [решено] Запуск скрипта как Shell Command
Iska, stuermer01, Не дошлО:
Цитата stuermer01:
но надо переделать, чтоб работало из пакетника на флешке.
Все гениальное - просто!
Не въехал, что Вы таким способом решаете.
Если Вы носите эту флэшку с собой на разные компьютеры, то где Вы собрались делать эту кучу ярлыков? И везде будете разбрасывать куда-то стороннюю утилиту? ИМХО, ее надо хранить на флэшке.
Если из пакетника на флэшке, если RemoveDrive.exe в корне флэшки, то вариант батника, который подставит букву диска:
Код:
Возможные доработки - создать на флэшке папочку для хранения RemoveDrive.exe и в батнике прописать правильный путь.
Плюс в батнике можно проанализировать разрядность системы (где-то здесь это решалось) и запускать нужный вариант RemoveDrive.exe из нужной папки.
Имя диска уже известно, осталось указать правильную папку.
Надо еще помнить о том, что -f принудительно отключит флэшку, с открытыми файлами церимониться не будет, ИМХО.
А иначе расположить батник на флэшке ИМХО не получится.
Цитата stuermer01:
но надо переделать, чтоб работало из пакетника на флешке.
Все гениальное - просто!
CMD/BAT - [решено] Запуск скрипта как Shell Command
Не въехал, что Вы таким способом решаете.Если Вы носите эту флэшку с собой на разные компьютеры, то где Вы собрались делать эту кучу ярлыков? И везде будете разбрасывать куда-то стороннюю утилиту? ИМХО, ее надо хранить на флэшке.
Если из пакетника на флэшке, если RemoveDrive.exe в корне флэшки, то вариант батника, который подставит букву диска:
Код:
Код: Выделить всё
@Echo Off
>nul Start " " RemoveDrive.exe %~d0 -f >nulВозможные доработки - создать на флэшке папочку для хранения RemoveDrive.exe и в батнике прописать правильный путь.
Плюс в батнике можно проанализировать разрядность системы (где-то здесь это решалось) и запускать нужный вариант RemoveDrive.exe из нужной папки.
Имя диска уже известно, осталось указать правильную папку.
Надо еще помнить о том, что -f принудительно отключит флэшку, с открытыми файлами церимониться не будет, ИМХО.
А иначе расположить батник на флэшке ИМХО не получится.
-
Iska
Re: CMD/BAT - [решено] Запуск скрипта как Shell Command
Цитата megaloman:
Не дошлО:
До меня, кстати, тоже
.
Не дошлО:
CMD/BAT - [решено] Запуск скрипта как Shell Command
До меня, кстати, тоже
.-
stuermer01
Re: CMD/BAT - [решено] Запуск скрипта как Shell Command
Цитата megaloman:
Iska, stuermer01, Не дошлО:
Сорри, только сейчас случайно прочитал. Не приходят уведомления на мейл.
Все намного проще, флешка не носится на разные компы и буква диска известна и утилита на компе находится.
Но даже если флешка и носится на разные компы и утилита на флешке, то автор утилиты это предусмотрел (там даже самоликвидация есть
):
Скрытый текст
[spoiler]RemoveDrive DriveSpec: [-v][-d][-l][-t][-f][-vhd][-h][-a][-b][-i][-s][-w:nnnn][-na]
DriveSpec is the drive to remove, e.g. U: or an NTFS mountpoint as
"C:\CardReader\Multi Reader SD"
or . for the current drive
or \ for the drive of the RemoveDrive.exe[/spoiler]
Iska, stuermer01, Не дошлО:
CMD/BAT - [решено] Запуск скрипта как Shell Command
Сорри, только сейчас случайно прочитал. Не приходят уведомления на мейл.
Все намного проще, флешка не носится на разные компы и буква диска известна и утилита на компе находится.
Но даже если флешка и носится на разные компы и утилита на флешке, то автор утилиты это предусмотрел (там даже самоликвидация есть
):Скрытый текст
[spoiler]RemoveDrive DriveSpec: [-v][-d][-l][-t][-f][-vhd][-h][-a][-b][-i][-s][-w:nnnn][-na]
DriveSpec is the drive to remove, e.g. U: or an NTFS mountpoint as
"C:\CardReader\Multi Reader SD"
or . for the current drive
or \ for the drive of the RemoveDrive.exe[/spoiler]
Документация тут.