Как получить доступ к локальному файлу, расположенному в папке с зарезервированным системным именем в Windows, например «CON»? - PullRequest
0 голосов
/ 12 июня 2018

Мне нужно получить доступ к файлу, расположенному по локальному пути, который содержит папку с именем con.Имена папок, такие как con, nul и т. Д., Зарезервированы для использования в определенных системных задачах, и попытка доступа к файлу в таких каталогах приведет к следующим сообщениям:

  • Форма командной строки:«Системе не удается найти указанный путь.»
  • Из проводника: «C: \ Users \ USERNAME \ con не доступен».Неверный дескриптор.

Если я не могу изменить имя таких папок, как я могу получить доступ к таким файлам?

Я отмечаю, что такие имена папок можно создавать в командной строкес помощью следующей команды:

md con\

и могут быть удалены с помощью:

rd /q /s con

Кроме того, файлы могут быть успешно добавлены путем перетаскивания их в папку с помощью проводника.

Я также пытался использовать git-bash для создания, удаления и открытия содержимого таких каталогов, и все, кажется, работает нормально, однако, когда я пытаюсь из окон, файлы не доступны, даже если они явно находятся в пути.

1 Ответ

0 голосов
/ 12 июня 2018

Добавьте префикс \\?\, как описано здесь , это должно нормально работать в PowerShell, как показано в этом примере .

PS C:\temp\posh> gci
PS C:\temp\posh> cmd /c "md con\"
PS C:\temp\posh> gci


    Directory: C:\temp\posh


Mode                LastWriteTime         Length Name
----                -------------         ------ ----
d-----         12-06-18     09:24                con


PS C:\temp\posh> rm -LiteralPath '\\?\c:\temp\posh\con\'
PS C:\temp\posh> gci
PS C:\temp\posh>

А вот какнаписать и прочитать файл в папке с зарезервированным именем с помощью PowerShell:

PS C:\temp\posh> "test" | out-file -LiteralPath "\\?\c:\temp\posh\con\test.txt"
PS C:\temp\posh> Get-Content -LiteralPath "\\?\c:\temp\posh\con\test.txt"
test
PS C:\temp\posh>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...