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 7 (браузер файлов, такой как XP)
  • Отключить открытие браузера из адресной строки проводника Windows.
  • Windows 10 Jumplist отсутствует элемент
  • Все работает очень медленно в Windows 7 на моем ноутбуке Dell
  • Консоль
  • Открыть и выбрать файл в существующем окне проводника
  • Альтернатива проводнику Windows для имен длинных путей
  • Как восстановить раздел «Избранное» в проводнике после того, как все записи были удалены?
  • Комбинация клавиш для создания новой папки или файла? (Windows)
  • Ошибка в проводнике Windows? Почему в окне проводника Windows Explorer не распознается символ «R» для набора имен файлов?
  • Windows находит все файлы в каталоге
  • Interesting Posts

    Получить общее количество документов с помощью MongoDB при использовании лимита

    ERROR 2006 (HY000): сервер MySQL ушел

    Как написать ключевой прослушиватель для отслеживания всех нажатий клавиш на Java?

    Неправильное ключевое слово C ++ вовлекает забор памяти?

    Как читать MFT на жестком диске USB (NTFS, 1TB)?

    Почему я могу увидеть файл, который у меня есть в CygWin, но не в проводнике Windows?

    Как установить стиль «Заголовок» в Word 2013?

    Зачем начинать использовать -libraryjars, когда я никогда не нуждался в нем раньше?

    Как поднять ошибку в функции MySQL

    Как удалить или деактивировать мою лицензию на Windows 7 на одном компьютере и использовать ее на другом

    Синтаксис функции C, типы параметров, объявленные после списка параметров

    Как анализировать XML с помощью анализатора SAX

    CMake: Какое использование find_package (), если вам нужно указать CMAKE_MODULE_PATH?

    Как использовать invokeAll (), чтобы все пулы streamов выполняли свою задачу?

    JSON.NET и nHibernate Lazy Загрузка коллекций

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