Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Alexander_88, это особенность любого языка, в котором некоторые символы внутри строк могут рассматриваться как специальные. С одной стороны, это даёт некоторые плюсы, с другой — минусы, с одним из которых Вы познакомились.

Сравните:
Код: Выделить весь код
Get-ChildItem -Path 'C:\Мои проекты\0274' -File |`
    ForEach-Object -Process {
        $_.FullName
        Get-Content -Path $_.FullName
    }
Цитата:
Код: Выделить весь код
C:\Мои проекты\0274\0001.txt
0001.txt content here
C:\Мои проекты\0274\[0002].txt
Get-Content : An object at the specified path C:\Мои проекты\0274\[0002].txt does not exist, or has been filtered by the -Include or -Exclude parameter.
At line:3 char:9
+         Get-Content -Path $_.FullName
+         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (System.String[]:String[]) [Get-Content], Exception
    + FullyQualifiedErrorId : ItemNotFound,Microsoft.PowerShell.Commands.GetContentCommand
и:
Код: Выделить весь код
Get-ChildItem -Path 'C:\Мои проекты\0274' -File |`
    ForEach-Object -Process {
        $_.FullName
        Get-Content -Path $([Management.Automation.WildcardPattern]::Escape($_.FullName))
    }
Цитата:
Код: Выделить весь код
C:\Мои проекты\0274\0001.txt
0001.txt content here
C:\Мои проекты\0274\[0002].txt
[0002].txt content here
Статический метод .Escape() класса Management.Automation.WildcardPattern экранирует в данном случае обе квадратные скобки в имени второго файла, в результате чего получается:
Код: Выделить весь код
C:\Мои проекты\0274\`[0002`].txt
Это сообщение посчитали полезным следующие участники:

Отправлено: 21:41, 25-08-2019 | #4