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

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

Ответить
Настройки темы
CMD/BAT - [решено] Запуск скрипта как Shell Command

Пользователь


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

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


Добрый день.

Есть такой скрипт, который записан в реестре в контекстном меню HKEY_CLASSES_ROOT\Drive\shell\ как command . Он оттуда работает.

Скрытый текст
cmd.exe /q /c FOR /F "usebackq" %%i IN ('%V') DO ECHO Подготовка %%~di к безопасному извлечению...ждите... & TITLE Безопасное извлечение диска %%~di & RemoveDrive.exe %%~di && (TITLE Извлечение накопителя успешно завершено) & PAUSE


Теперь нужно его же запустить из .cmd файла. Просто , если скопировать его в .cmd и убрать "cmd.exe /q /c" - окно пропадает даже если вписать pause.
Как сделать чтоб запускался из пакетного файла?

Отправлено: 20:34, 23-11-2021

 

Старожил


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

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


замените
HTML код: Выделить весь код
/c

на
HTML код: Выделить весь код
/k

в
Код: Выделить весь код
cmd.exe /q /c
и увидите вообще все

и узнайте что передается shell ом в переменной
Код: Выделить весь код
 %V
-
этого вам никто не скажет - это берется из конткста выполнения того что вы автоматизируете
типа как в {00021400-0000-0000-C000-000000000046}
Код: Выделить весь код
cmd.exe /s /k pushd "%V"

Отправлено: 04:49, 24-11-2021 | #2



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

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


Пользователь


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

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


Не понял. Это скрипт безопасного извлечения флешки при помощи внешней утилиты RemoveDrive.exe. Скрипт записан через реестр и вызывается через контекстное меню кнопки диска (флешки). Работает так нормально, но надо переделать, чтоб работало из пакетника на флешке.

Заменил /с на /k , ничего не изменилось, окошко сразу пропадает.

Скрытый текст
cmd.exe /s /k pushd "%V"

При запуске с флешки выдает: "Системе не удается найти указанный путь."

Отправлено: 14:17, 24-11-2021 | #3


Старожил


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

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


имелось в виду- в вашей и многих других командах реестра %V это параметр

без правильного параметра никакой скрипт не будет работать

Отправлено: 17:54, 24-11-2021 | #4


Пользователь


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

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


Как мне его узнать? pushd не работает.

Последний раз редактировалось stuermer01, 24-11-2021 в 20:48.


Отправлено: 19:56, 24-11-2021 | #5


Ветеран


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

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


stuermer01, когда Вы делаете:
Цитата stuermer01:
вызывается через контекстное меню кнопки диска (флешки). »
вместо %V Проводник подставляет букву устройства.

Всё, что Вам надо — запускать RemoveDrive.exe с потребным параметром. Который теперь будете определять Вы, а не Проводник. Например, создать по ярлыку на каждое возможное имя устройства:

RemoveDrive.exe D:
RemoveDrive.exe E:
RemoveDrive.exe F:

и т.д. и каждый раз «ручками» выбирать потребный ярлык .

А можно не страдать, а просто взять Far Manager и пользовать Shift-Del на устройстве:
Цитата:
Комбинация Shift+Del используется для подготовки к безопасному извлечению запоминающих устройств для USB. Если диск, для которого применяется функция извлечения, является одной из flash-карт, вставленных в картридер с поддержкой нескольких flash-карт, то будет отключён сам картридер.
Это сообщение посчитали полезным следующие участники:

Отправлено: 22:55, 24-11-2021 | #6


Пользователь


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

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


Цитата Iska:
Всё, что Вам надо — запускать RemoveDrive.exe с потребным параметром. Который теперь будете определять Вы, а не Проводник. Например, создать по ярлыку на каждое возможное имя устройства:
RemoveDrive.exe D:
RemoveDrive.exe E:
RemoveDrive.exe F: »
Да, тоже сегодня утром пришла эта идея! Все гениальное - просто!

Отправлено: 11:54, 25-11-2021 | #7


Ветеран


Contributor


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

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


Iska, stuermer01, Не дошлО:
Цитата stuermer01:
но надо переделать, чтоб работало из пакетника на флешке.
Все гениальное - просто! »
Не въехал, что Вы таким способом решаете.
Если Вы носите эту флэшку с собой на разные компьютеры, то где Вы собрались делать эту кучу ярлыков? И везде будете разбрасывать куда-то стороннюю утилиту? ИМХО, ее надо хранить на флэшке.
Если из пакетника на флэшке, если RemoveDrive.exe в корне флэшки, то вариант батника, который подставит букву диска:
Код: Выделить весь код
@Echo Off
>nul Start " " RemoveDrive.exe %~d0 -f >nul
Возможные доработки - создать на флэшке папочку для хранения RemoveDrive.exe и в батнике прописать правильный путь.
Плюс в батнике можно проанализировать разрядность системы (где-то здесь это решалось) и запускать нужный вариант RemoveDrive.exe из нужной папки.
Имя диска уже известно, осталось указать правильную папку.
Надо еще помнить о том, что -f принудительно отключит флэшку, с открытыми файлами церимониться не будет, ИМХО.
А иначе расположить батник на флэшке ИМХО не получится.

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 25-11-2021 в 13:57.

Это сообщение посчитали полезным следующие участники:

Отправлено: 13:44, 25-11-2021 | #8


Ветеран


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

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


Цитата megaloman:
Не дошлО: »
До меня, кстати, тоже .

Отправлено: 17:20, 25-11-2021 | #9


Пользователь


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

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


Цитата megaloman:
Iska, stuermer01, Не дошлО: »
Сорри, только сейчас случайно прочитал. Не приходят уведомления на мейл.
Все намного проще, флешка не носится на разные компы и буква диска известна и утилита на компе находится.

Но даже если флешка и носится на разные компы и утилита на флешке, то автор утилиты это предусмотрел (там даже самоликвидация есть ):

Скрытый текст
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

Документация тут.

Последний раз редактировалось stuermer01, 19-12-2021 в 21:23.

Это сообщение посчитали полезным следующие участники:

Отправлено: 21:18, 19-12-2021 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
PowerShell - Запуск скрипта Паразит Скриптовые языки администрирования Windows 1 03-06-2021 10:46
Службы - Как отследить запуск скрипта с удаленного ПК krotts Windows Server 2008/2008 R2 4 06-12-2020 12:11
VBS/WSH/JS - Как подставить запуск скрипта, вместо системной утилиты. caracarum Скриптовые языки администрирования Windows 5 19-10-2016 11:32
2012 R2 - Запуск и работа Excel VBA используя службу Windows и Power Shell Mor940k Windows Server 2012/2012 R2 0 12-04-2016 12:26
PowerShell - [решено] Запуск скрипта Lich130387 Скриптовые языки администрирования Windows 5 31-10-2013 14:43




 
Переход