Powershell (v2) Путь серьезного ударения (escape-символ) конфликтует с Get-ChildItem
У меня есть друг с видео на моем компьютере. Путь
C:\Users\Me\Videos\Tonys Videos\Dinosaur [1080p]\
В папке фильма "Динозавр" находится папка "asset", которая содержит несколько файлов.gif,.jpg и.png. Я хотел немного узнать о Powershell, поэтому я изменил каталог с помощью...
cd "C:\Users\Me\Videos\Tonys Videos\Dinosaur ``[1080p``]\assets"
Символ (`) был необходим для специальных символов в скобках и цитат для пробела в папке"Tonys Videos". Я могу напечатать Get-ChildItem, и весь список будет заполнен очень хорошо, но я сталкиваюсь с ошибками, когда пытаюсь использовать флаг исключения (независимо от того, "исключена" одна или несколько строк, он по-прежнему не выводится.
Я запустил еще один тест, в котором я скопировал папку "assets" в "Tonys Videos" (таким образом, серьезный акцент был бы опущен, и все прошло нормально. Я использую PS v2.0, но это действительно не должно сильно измениться. Мой вопрос: почему "Get-ChildItem -exclude" не работает с серьезными акцентами?
В ответ на комментарий это моя попытка с Get-ChildItem
Get-ChildItem "C:\Users\Me\Videos\Tonys Videos\Dinosaur ``[1080p``]\assets" -Exclude *.jpg,*png
Я протестировал этот же формат (как указано выше) в папке "Tonys Videos", и он работал просто отлично. Спасибо за вашу постоянную помощь.
2 ответа
Когда есть специальные ключи в пути, используйте Get-ChildItem -LiteralPath "YourPath"
, С -LiteralPath
вам не нужно (`).
Что ты пишешь по исключению?
Для меня это работает:
Get-ChildItem -Path "C:\temp\``[TEST``]\*.*" -Exclude *.jpg,*.png
Вам нужно \*.*
что вы можете что-то исключить. С Get-ChildItem -LiteralPath
ты не можешь использовать \*.*
,
Вы можете использовать это?
Get-ChildItem -Path "C:\temp\``[TEST``]" | Where-Object -FilterScript {$_.Name -notlike "*.jpg" -and $_.Name -notlike "*.png"}
Может быть, другой пользователь знает, почему исключение не работает.
Вы также можете включить строку в одинарные кавычки, которые не будут пытаться расширить или интерпретировать содержимое строки. Обратите внимание, что переменные тоже не будут расширяться.