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

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

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

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

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

Я пробовал 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 \ ""

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

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

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

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

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

 [HKEY_CLASSES_ROOT \ Directory \ shell \ Run Batch script]
 @ = "& 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"

 [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]
 @ = "& 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" . Он просто добавляет значок в контекстное меню, которое выглядит так:

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

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

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

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

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

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

Сохраните контекстное меню в реестре, и вы хорошо пойдете.

@Vinayak,

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

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

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

Не уверен, что мне нужен «set targetfolder =% 1», но он работает, поэтому я держу его таким образом 🙂

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

  • История файлов Windows не может анализировать изменения в пользовательской библиотеке
  • Проводник Windows Explorer для обеспечения функциональности с вкладками в Windows 7?
  • Наличие Windows 7 «Сортировка по типу файла» по умолчанию
  • Горячая клавиша для «Этот ПК»
  • Отключить сочетание клавиш Ctrl + Z или удалить историю отмены в проводнике Windows?
  • Почему у explorer.exe установлено установленное соединение с сервером Microsoft?
  • Может ли панель предварительного просмотра Windows 7 Explorer не блокировать редактирование документов Acrobat и Word?
  • Восстановить удаленные папки по умолчанию
  • Как уменьшить размер заливки заголовка и окна на Windows 8 или Windows 10?
  • Windows 7: миниатюры изображений не отображаются
  • Как просмотреть расширения Explorer и отключить их?
  • Interesting Posts

    Как подключить портативный монитор USB Type-C к графической карте с портом дисплея или hdmi

    Взвешенная случайность в Java

    Наименьшее расстояние между точкой и отрезком

    Экран дисплея нетбука искажен (имеет черно-белые и горизонтальные линии, зависание экрана и / или неправильную позицию отображения)

    Является ли buildSessionFactory () устаревшим в спящем режиме 4?

    в блоке «using» есть SqlConnection, закрытое по возврату или исключению?

    Время работы накопителей SSD

    Что делает «формат»?

    Visual Studio SignTool.exe не найден

    Не удается запустить веб-приложение ASP.NET MVC 2 на IIS 7.5

    Получить URL-адрес Firefox?

    Как я могу получить виртуальные рабочие столы (например, Mac's Spaces) на моей машине с Windows 7?

    Настройка параметров прокси-сервера для автоматического обнаружения прокси-сервера с помощью командной строки на Mac OSX

    История BASH усечена до 500 строк при каждом входе в систему

    Создание тепловой карты из панд DataFrame

    Давайте будем гением компьютера.