Как подружить консоль PowerShell c квадратными скобками

Powershell

В именах папок и файлов вы можете использовать любые символы кроме девяти зарезервированных, даже смайлики, но то, что Проводник ничего не имеет против подобной экзотики ещё не означает, что это будет приниматься как должное другими штатными приложениями. Если вы попробуете открыть в консоли PowerShell каталог, в названии которого имеются квадратные скобки, то получите либо ошибку, либо ровным счетом ничего, и это при том, что в классической командной строке с выводом не возникает никаких проблем.

CMD

Для примера создадим в корне пользовательского раздела папку с именем [data], закинем в нее два файла и попробуем вывести ее содержимое командой Get-ChildItem "E:\[data]". Ошибки нет, но нет и результата выполнения команды. Но если мы заменим командлет вывода содержимого командлетом перехода в папку Set-Location, то получим ошибку «путь не существует».

Set-Location

Причина ошибки даже очень проста.

Дело в том, что квадратные скобки в консоли PowerShell используются в качестве подстановочных символов, например, при поиске файлов с определенными именами.

Используя в приведенном выше примере квадратные скобки, мы даём команду вывести содержимое не папки [data], а ее родительского объекта, то есть корня диска, вернее, только тех файлов и папок, которые имеют названия d, a или t. По этой причине лучше не использовать в путях нестандартные или экзотические символы, а если без них уж никак, либо экранируйте их в PowerShell с помощью обратного апострофа (`), либо добавляйте специальный параметр LiteralPath.

Последний сообщает PowerShell, что подстановочные символы, если, конечно, вы имеете дело именно с подстановочными символами, а не с какими-либо другими, должны обрабатываться как обычный текст.

Выполняем команду Get-ChildItem -LiteralPath "E:\[data]" и без проблем получаем список файлов в папке [data].

LiteralPath

Параметр LiteralPath поддерживается практически всеми командлетами, чего нельзя сказать об экранирующих кавычках.

Оцените Статью:

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *