Этот вопрос вызван проблемой, с которой я столкнулся при написании этого ответа. Я вызываю PowerShell, как это из реестра:
C:\Windows\System32\WindowsPowerShell\v1.0\PowerShell.exe -NoExit -Command "cd '%v'"
Двойные кавычки необходимы для параметра Command для PowerShell.exe, а одинарные кавычки, разумеется, необходимы для работы с любыми пробелами в имени текущего рабочего каталога (CWD).
Проблема в том, что это не удается, если CWD содержит одну кавычку в своем имени (очевидно, так как это преждевременно завершает строку имени каталога). Во время тестирования из командной строки я нашел обходной путь для этого, который должен был указать две одинарные кавычки, так что первая действует как escape-символ:
Это все хорошо, но как мне исправить эту проблему с одинарными кавычками, когда PowerShell вызывается с % v прямо из реестра? Одним из способов может быть вызов пакетного файла с помощью % v, замена каждой отдельной кавычки в имени каталога на две одинарные кавычки, а затем по очереди вызов PowerShell, но это такое уродливое решение. У кого-нибудь есть идея получше?