Я использую слегка измененную версию техники, приведенной в этом ответе, для создания элемента контекстного меню в проводнике Windows, который позволяет мне запускать сценарий PowerShell для определенных папок.
Команда выглядит так:
cmd /K PowerShell "C:\PowerShellScript\folder_script.ps1 \"%1\" | clip"
Это прекрасно работает, за исключением случаев, когда в имени папки есть символ амперсанда (&). Затем я получаю следующую ошибку (целевая папка была названа Testing & Testing
):
The string starting:
At line:1 char:37
+ C:\PowerShellScript\folder_script.ps1 <<<< "E:\tmp\Testing
is missing the terminator: ".
At line:1 char:53
+ E:\Dropbox\PowerShell\namefixer.ps1 "E:\tmp\Testing <<<<
+ CategoryInfo : ParserError: (E:\tmp\Testing :String) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : TerminatorExpectedAtEndOfString
Очевидно, что-то интерпретирует амперсанд как специальный символ, но я не знаю, как это исправить. Исключение амперсанда из имени папки не является жизнеспособным решением для меня.
Решение, которое не включает пакетный скрипт, было бы предпочтительным.
Я использую Windows 7 Enterprise (64-разрядная версия) с PowerShell 2.