Как выполнить команду rename в PowerShell только для выбранных файлов в проводнике? У меня есть команда PS, но я не знаю, где ее можно включить в реестр Windows, чтобы быть доступным в контекстном меню правой кнопки мыши в проводнике.Выполнение команды PowerShell для выбранных файлов в проводнике
ответ
HKCR: \ * \ shell содержит то, что вам нужно. Создайте новый ключ с именем того, что вы хотите назвать (например, «Переименовать с датой»), затем подраздел «Команда» со значением по умолчанию вашей команды.
Так, например, HKCR:\*\shell\Rename With Date\Command
, где значение (по умолчанию) равно PowerShell -Command Rename-Item "%1" ((Get-Date).ToShortDateString() + " - %1")
, или что-то должно сделать трюк, который я думаю.
На самом деле я сомневаюсь, что эта конкретная команда будет работать, потому что Rename-Item просто ожидает имя файла во втором параметре, а не весь путь, поэтому вам нужно разделить путь, чтобы получить только имя файла и расширение, но я cba - это просто пример xP –
Я попробовал команду в сеансе powershell, и это заслоняло о косых чертах, возвращаемых датой. Поэтому ему нужно что-то вроде '' (get-date) .toShortDateString(). Replace ("/", "-") ...) ' – stib
Это довольно легко добавить команду контекстного меню для выбранных файлов в File Explorer с помощью Powershell, чтобы написать командную строку в реестре:
# Add a context-menu item named 'Foo' to the context menu of files
# that executes a PowerShell command that simply echoes the file path given.
$null = New-ItemProperty `
-LiteralPath (New-Item -Force "HKCU:\Software\Classes\*\shell\Foo\command").PSPath `
-Name '(Default)' `
-Value "$PSHOME\powershell.exe -noprofile -noexit -command '`"%1`"'"
Вышеуказанные цели HKCU:\Software\Classes\*\shell
(HKEY_CURRENT_USER\Software\Classes\*\shell
) и поэтому применяется к файлам; папка только HKCU:\Software\Classes\Folder\shell
, а для и файлы и папки - HKCU:\Software\Classes\AllFileSystemObjects\shell
.
Также обратите внимание на использование -LiteralPath
, что имеет решающее значение для предотвращения интерпретации *
в HKCU:\Software\Classes\*
в качестве подстановочного знака.
Обратите внимание, что запись в эквивалентные клавиши HKEY_LOCAL_MACHINE
, чтобы сделать команду доступной для , все пользователям потребуется отметка.
предостережение является то, что при таком подходе команда вызывается для каждого выбранного файла, следует несколько файлов выбрать.
Другими словами: если ваше намерение состоит в том, чтобы переименовать группу файлов и ваша переименованием логика требует, чтобы группа считается в целом, выше подход не будет работать.
Вы можете попытаться обойти это в самом скрипте, но это было бы нетривиально.
Более надежное решение является создание обработчиков контекстного меню, который требует написания «в процессе производства модели компонентных объектов (COM) объекты реализованы в виде библиотек DLL» (от docs).
Я также очень заинтересован в добавлении (и запуске) сценариев PowerShell, щелкнув правой кнопкой мыши на вещах. Если это возможно, пожалуйста, дайте мне знать :) – Shark
Возможный дубликат [Как запустить PowerShell из проводника Windows?] (Http://stackoverflow.com/q/183901/1630171). –
Не совсем дубликат. В этой статье показано, как открыть PowerShell, щелкнув правой кнопкой мыши папку или фон папки в проводнике. Этот вопрос предназначен для запуска команды PowerShell в файлах через меню правой кнопки мыши. –