Попробуйте использовать командлет Show-Tree .
09:17 $ Show-Tree C:\Chocolatey\ -Depth 1 C:\Chocolatey\ |--bin \--lib
Следующий вход:
PS STG:\> Get-ChildItem | tree
Дает мне
Folder PATH listing for volume Data Volume serial number is 6576-C540 D:. ÃÄÄÄAPK ÃÄÄÄAssets ³ ÃÄÄÄAnimations ³ ³ ÃÄÄÄCharacters ³ ³ ³ ÀÄÄÄinhabitant ³ ³ ÃÄÄÄEnvironment ³ ³ ÀÄÄÄProps ³ ÃÄÄÄMaterials ³ ³ ÃÄÄÄCharacters ³ ³ ³ ÀÄÄÄinhabitant ³ ³ ÃÄÄÄEnvironment ³ ³ ÃÄÄÄParticles ³ ³ ³ ÀÄÄÄasteroidParticle ³ ³ ÀÄÄÄProps ³ ÃÄÄÄMeshes ³ ³ ÃÄÄÄCharacters ³ ³ ³ ÀÄÄÄinhabitant ³ ³ ÃÄÄÄEnvironment ³ ³ ÀÄÄÄProps
...так далее.
Когда я ожидал что-то отформатированное больше похоже на:
├───APK ├───Assets └───Animations | └───Characters | | └───inhabitant | ├───Environment | └───Props └───Materials | └───Characters | | └───inhabitant | ├───Environment | └───Particles | | └───asteroidParticle | └───Props └───Meshes └───Characters | └───inhabitant ├───Environment └───Props
Что я делаю / неправильно понимаю?
Это значение $OutputEncoding
:
IsSingleByte : True BodyName : iso-8859-1 EncodingName : Western European (Windows) HeaderName : Windows-1252 WebName : Windows-1252 WindowsCodePage : 1252 IsBrowserDisplay : True IsBrowserSave : True IsMailNewsDisplay : True IsMailNewsSave : True EncoderFallback : System.Text.InternalEncoderBestFitFallback DecoderFallback : System.Text.InternalDecoderBestFitFallback IsReadOnly : True CodePage : 1252`
)`, but I am not able to repro OP's issue by setting the code page to `1252`
Rynant 10 лет назад
0
Попробуйте использовать командлет Show-Tree .
09:17 $ Show-Tree C:\Chocolatey\ -Depth 1 C:\Chocolatey\ |--bin \--lib
В зависимости от версии PowerShell и наличия или отсутствия расширений сообщества, вы можете в итоге вызвать C: \ Windows \ System32 \ tree.com. Бессмысленность в том, что PowerShell не использует правильную кодировку для отображения расширенных символов, которые tree.com использует по умолчанию. Вы можете использовать chcp.com, чтобы увидеть текущую настройку кодовой страницы командного процессора. Обычно по умолчанию используется кодовая страница 437. PowerShell по умолчанию использует кодовую страницу 1252. Есть варианты для решения этой проблемы, которые работают хорошо, и при этом малоэффективны и просты.
tree | %{ [System.Text.Encoding]::GetEncoding('IBM437').GetString($OutputEncoding.GetBytes($_)) }
Вы запускаете команду в Powershell или Powershell ISE?
Есть разница
Вот что я получаю в Powershell ISE:
PS C:\powershell> Get-ChildItem | tree Folder PATH listing Volume serial number is XXXX-XXXX C:. ÃÄÄÄFolder 1 ³ ÃÄÄÄSubfolder 1 ³ ÃÄÄÄSubfolder 2 ³ ÃÄÄÄSubfolder 3 ³ ÀÄÄÄSubfolder 4 ÃÄÄÄFolder 2 ³ ÃÄÄÄSubfolder 1 ³ ÃÄÄÄSubfolder 2 ³ ÃÄÄÄSubfolder 3 ³ ÀÄÄÄSubfolder 4 ÃÄÄÄFolder 3 ³ ÃÄÄÄSubfolder 1 ³ ÃÄÄÄSubfolder 2 ³ ÃÄÄÄSubfolder 3 ³ ÀÄÄÄSubfolder 4 ÀÄÄÄFolder 4 ÃÄÄÄSubfolder 1 ÃÄÄÄSubfolder 2 ÃÄÄÄSubfolder 3 ÀÄÄÄSubfolder 4 PS C:\powershell>
Вот что я получаю в Powershell:
PS C:\powershell> Get-childitem | tree Folder PATH listing Volume serial number is XXXX-XXXX C:. +---Folder 1 ¦ +---Subfolder 1 ¦ +---Subfolder 2 ¦ +---Subfolder 3 ¦ +---Subfolder 4 +---Folder 2 ¦ +---Subfolder 1 ¦ +---Subfolder 2 ¦ +---Subfolder 3 ¦ +---Subfolder 4 +---Folder 3 ¦ +---Subfolder 1 ¦ +---Subfolder 2 ¦ +---Subfolder 3 ¦ +---Subfolder 4 +---Folder 4 +---Subfolder 1 +---Subfolder 2 +---Subfolder 3 +---Subfolder 4 PS C:\powershell>