Windows: Как добавить действие пакетного скрипта в меню правого клика

18

У меня есть несколько программ, которые создают временные файлы или файлы резервных копий или аналогичные файлы, которые не важны. Например, GVim для Windows по умолчанию создает файл резервной копии в filename.txt~.

Иногда мне нужно очистить каталог и удалить все эти файлы. Я сделал простой файл .bat для этого. Тем не менее, это громоздко, чтобы запустить CMD, перейти к папке, запустить скрипт. Тем более что это скрипт, который я хотел бы часто запускать в разных папках. И я не хочу копировать скрипт в несколько папок, так как это будет кошмар обслуживания.

Итак, я подумал, что лучшим решением было бы добавить пункт меню «Правый клик», который позволит мне запустить скрипт. Чтобы я мог щелкнуть правой кнопкой мыши папку в Проводнике и выбрать Очистить, а затем запустить мой сценарий в этой папке.

Итак, мой вопрос: как добавить правое меню, которое запускает пользовательский пакетный скрипт?

ervingsb
источник

Ответы:

18

Я пробовал на Windows XP SP3 с этим ключом .reg. На данный момент у вас нет Windows 7, чтобы правильно ее протестировать, но она должна быть почти такой же.

  1. Откройте блокнот и вставьте код снизу.
  2. Отредактируйте согласно вашей потребности.
  3. Сохранить как MyScript1.reg
  4. Дважды щелкните, чтобы импортировать в реестр.
  5. Тест правой кнопкой мыши на любом каталоге в проводнике
Редактор реестра Windows, версия 5.00

[HKEY_CLASSES_ROOT \ Directory \ Shell \ MyScript1]
@ = "Выполнить MyScript1"

[HKEY_CLASSES_ROOT \ Directory \ Shell \ MyScript1 \ команда]
@ = "\" C: \\ MyScriptsDirectory \\ MyScript1Directory \\ MyScript1.bat \ "\"% 1 \ ""
Роберт Шмидт
источник
4
Я немного отредактировал ваш ответ. «Редактор реестра Windows версии 5.00» является обязательным «заголовком» для файлов .reg. В противном случае Windows откажется ввести содержимое в реестр.
экстремко
+1 за указание на это. Я полностью забыл об этом, когда код c / p.
Роберт Шмидт
1
Я попробовал это. Теперь я могу прямо щелкнуть правой кнопкой мыши по папке, но она не работает, если щелкнуть правой кнопкой мыши внутри папки. Что на самом деле то, что я хочу. Как это сделать?
ervingsb
1
Это другой вопрос, чем «чтобы я мог щелкнуть правой кнопкой мыши папку в Проводнике и выбрать« Очистить », а затем запустить мой сценарий в этой папке».
Роберт Шмидт
Да, именно поэтому я уточнил это. Извините за неточность. Я на самом деле думаю об этом как о щелчке правой кнопкой мыши на папке. Это просто не значок папки, а внутри папки.
ervingsb
19

На самом деле, текущий ответ не устарел. Я попробовал то же самое в Windows 10 и смог добавить Run Batch scriptв контекстное меню все папки в Windows.

Это содержимое моего пакетного скрипта (не будет работать с путями UNC ):

@ECHO OFF
ECHO% ~ n0 был вызван со следующими аргументами:
SET args =% *
ЕСЛИ НЕ ОПРЕДЕЛЕНЫ args GOTO END
ЭХО% *
:КОНЕЦ
ПАУЗА

Изменения реестра, которые я сделал, могут быть скопированы с этим файлом REG:

Редактор реестра Windows, версия 5.00

[HKEY_CLASSES_ROOT \ Directory \ shell \ Run Batch script]
@ = "& Выполнить пакетный скрипт"

[HKEY_CLASSES_ROOT \ Directory \ shell \ Run Batch script \ command]
@ = "\" H: \\ BATCH_FILE_PATH \\ context-batch.bat \ "\"% 1 \ ""

Это только добавляет пункт контекстного меню для всех каталогов / папок в Windows. Если вы хотите, чтобы он отображался для каждого файла, вы можете использовать это:

Редактор реестра Windows, версия 5.00

[HKEY_CLASSES_ROOT \ * \ shell \ Run script]
@ = "Run & script"

[HKEY_CLASSES_ROOT \ * \ shell \ Run script \ command]
@ = "\" H: \\ BATCH_FILE_PATH \\ context-batch.bat \ "\"% 1 \ ""

Кроме того, вы можете добавить свой пакетный скрипт в Send Toсписок элементов, создав ярлык для вашего пакетного скрипта и поместив его в %APPDATA%\Microsoft\Windows\SendTo(или введите shell:sendtoв адресную строку)

Если вы хотите, чтобы ваш скрипт отображался в контекстном меню, которое появляется при щелчке правой кнопкой мыши по пустому пространству в каталоге (фон каталога?), Вы можете использовать следующий файл REG:

Редактор реестра Windows, версия 5.00

[HKEY_CLASSES_ROOT \ Directory \ Background \ shell \ Run Batch script]
@ = "& Выполнить пакетный скрипт"
"Icon" = "% SystemRoot% \\ System32 \\ shell32.dll, 71"

[HKEY_CLASSES_ROOT \ Directory \ Background \ shell \ Run Batch script \ command]
@ = "H: \\ BATCH_FILE_PATH \\ context-batch.bat \"% V \ ""

Вам не нужна "Icon"="%SystemRoot%\\System32\\shell32.dll,71"линия. Он просто добавляет значок в ваше контекстное меню, которое выглядит следующим образом:

окна контекстного меню

Винаяк
источник
Благодарность! Кстати, вы знаете, как отобразить это контекстное меню, когда я щелкаю правой кнопкой мыши пустое пространство текущей папки (не только когда я щелкаю по самой папке)?
Том Брито
@ TomBrito Пожалуйста, смотрите мое последнее изменение.
Винаяк
@Tom Brito: Изменение контекстного меню пустого пространства, кажется, здесь
дано
@kreemoweet Спасибо, что связали это! Однако я узнал об этом, проанализировав редактор контекстного меню .
Винаяк
@kreemoweet Я изменил строку пути для Directory\Backgroundвключения %V, чтобы передать текущий каталог в скрипт. Однако я не совсем уверен, что это значит. %Wкажется, работает так же хорошо.
Винаяк
7

Я бы порекомендовал редактор программ по умолчанию для этой задачи. Это удобнее и безопаснее, чем редактирование реестра напрямую.

Выберите контекстное меню введите описание изображения здесь

Выберите расширение, которое вы хотите изменить. введите описание изображения здесь

Выберите Добавить ... введите описание изображения здесь

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

Сохраните контекстное меню в реестре, и все готово.

Xtremity
источник
Я хотел бы запустить пакет на папки, а не тип файла. Похоже, это не поможет ...
Том Брито
Это помогло мне, спасибо, что поделились.
Даниэль Каплан
Хорошая программа. Благодарю.
Лори Стерн
0

Альтернативное решение, которое я использую в Windows 10, это добавление скрипта в одну из папок в переменной пути, а затем, когда вы находитесь в проводнике, используйте последовательность:

  • Ctrl + L - начать писать в строке поиска

  • введите: cmd, затем нажмите Enter - чтобы запустить cmd в текущем каталоге

  • запустите ваш скрипт, набрав его имя файла

jabone
источник
0

@Vinayak,

При использовании опции «отправить» вам, вероятно, потребуется добавить строку cd /d %1в начало пакетной команды, чтобы она выполнялась по целевому пути.

мой текущий командный файл выглядит так:

@echo off
cd /d %1    
del *.txt
pause

Спасибо за помощь, я случайно наткнулся на это через Google в нужный момент :)

Крис
источник
Это действительно комментарий, а не ответ на оригинальный вопрос. Чтобы критиковать или запрашивать разъяснения у автора, оставьте комментарий под его постом - вы всегда можете комментировать свои собственные посты, и, когда у вас будет достаточно репутации, вы сможете комментировать любой пост . Пожалуйста, прочитайте Почему мне нужно 50 репутации, чтобы комментировать? Что я могу сделать вместо этого?
DavidPostill
@DavidPostill, у него не было своего поста в этой теме, чтобы комментировать, до публикации своего ответа ... И (предположим, он хотел сказать что-то, достойное комментария), что он мог сделать, чтобы прокомментировать? ничего предположительно
Бароп
@ barlop Ответы не являются заменой для комментариев, как вы хорошо знаете. Один из вариантов - предложить изменить другой ответ ... но это, вероятно, будет отклонено.
Дэвид Постилл
@ DavidPostill я просто хочу сказать, что тогда у него нет выбора. и вы не совсем ясно об этом факте в своем первоначальном комментарии. На самом деле ваш оригинальный комментарий наводит на мысль о том, что у него есть несколько вариантов, но он этого не делает.
Бароп
@ barlop Ах. OK. Я подумаю над лучшей формулировкой ...
Дэвид Постилл