Как я могу определить указанный c символьный файл с powershell? - PullRequest
0 голосов
/ 21 февраля 2020

У меня есть файл.

c:\\[test^!#$%&'()=~{`}_+-^[];.,] test.xlsx

, но ошибка пути проверки PowerShell.

PS C:\\> Test-Path -LiteralPath "C:\\[test^!#$%&'()=~{`}_+-^[];.,] test.xlsx" -PathType Leaf

PS C:\\> False

PS C:\\> Test-Path "C:\\[test^!#$%&'()=~{`}_+-^[];.,] test.xlsx" -PathType Leaf

PS C:\\> False

У кого-нибудь есть идеи по поводу go по этому поводу? Спасибо!

1 Ответ

1 голос
/ 21 февраля 2020

Во-первых, наличие таких имен файлов вызывает проблемы. Это гораздо больше проблем, чем помощь.

При этом Powershell правила цитирования объясняет, как работать с кавычками. Поскольку в имени файла есть одиночная кавычка, ее нужно экранировать, удваивая ее - обычный обратный удар здесь не помогает. Here-Strings тоже работают. Вот так

# single quote twice
test-path -literalpath '[test^!#$%&''()=~{`}_+-^[];.,] test.xlsx'
True

# here-string
test-path -literalpath @'
>> [test^!#$%&'()=~{`}_+-^[];.,] test.xlsx
>> '@
True

# here-string in varialbe
$f =@'
>> [test^!#$%&'()=~{`}_+-^[];.,] test.xlsx
>> '@

test-path -literalpath $f
True
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...