Я ищу способ применить скрипт cmd или powershell к определенному файлу, щелкнув правой кнопкой мыши файл в проводнике Windows и выбрав «Применить скрипт XYZ».
Примером использования может быть создание файла, защищенного от записи, поэтому мой пакетный файл будет содержать:
attrib +r %filename%
где %filename%
находится имя файла, по которому я щелкнула правой кнопкой мыши в проводнике.
На данный момент достаточно одного файла, но мне было бы интересно применить этот метод к нескольким файлам (выбрав несколько файлов в папке) и целым папкам (выбрав папку).
Решение должно работать для Windows 10 и, если возможно, для UNC-путей и Windows 7.
РЕДАКТИРОВАТЬ: Пока что мне удалось сделать все, за исключением UNC-путей, этот пример работает для файлов (используяэтот источникиэтот источник):
Запись в реестре:
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\*\shell\SomeName]
@="NameOfTheMenueItem"
"icon"="someicon.ico"
[HKEY_CLASSES_ROOT\*\shell\SomeName\command]
@="\"X:\\folder\\batchfile.cmd\" \"%1\""
Пакетный файл:
set filepath=%1
attrib +r %filepath%
Пакетный файл (для папок):
set folderpath=%1
attrib +r %folderpath%\*.*
Оставшиеся проблемы:
- Мне нужно, чтобы это работало для UNC-Paths
- вернуть путь к папке пакетного файла без "", чтобы изменить его на
"X:\folderpath\*.*"
(на данный момент я получаю"X:\folderpath"
в качестве возвращаемого значения, хотя простое добавление\*.*
работает, результат"X:\folderpath"\*.*
выглядит не очень хорошо, не уверен, возникнут ли какие-либо проблемы в какой-то момент) - создать рекурсивную защиту от записи для всех файлов и подпапок выбранной папки