題 Get-ChildItem |樹給了我一個格式很糟的樹


以下輸入:

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`

5
2018-04-23 14:25


起源


在powershell中輸入$ OutputEncoding並粘貼結果 - Keltari
請參閱後期編輯。 - aPerfectMisterMan
@MHA,請將詳細信息複製到您的原始帖子中 - 帖子可以編輯。 - Dave
它看起來像編碼問題。我的樹工作,編碼是us-ascii。 IsSingleByte:True BodyName:us-ascii EncodingName:US-ASCII HeaderName:us-ascii WebName:us-ascii WindowsCodePage:1252 IsBrowserDisplay:False IsBrowserSave:False IsMailNewsDisplay:True IsMailNewsSave:True EncoderFallback:System.Text.EncoderReplacementFallback DecoderFallback:System.Text .DecoderReplacementFallback IsReadOnly:True CodePage:20127 - Keltari
@MHA是否使用ascii開關進行樹幫助? gci| tree /A - Rynant


答案:


嘗試使用 顯示樹 命令行開關。

09:17 $ Show-Tree C:\Chocolatey\ -Depth 1
C:\Chocolatey\
|--bin
\--lib

0
2018-05-20 06:17





根據PowerShell的版本以及是否存在社區擴展,您實際上最終可以調用C:\ Windows \ System32 \ tree.com。亂碼是因為PowerShell沒有使用正確的編碼來顯示tree.com默認使用的擴展字符。您可以使用chcp.com查看命令處理器的當前代碼頁設置。通常的默認值是代碼頁437. PowerShell默認使用代碼頁1252。有一些選項可以解決這個問題,並且效果很好且既簡單又簡單。

  1. 只需使用樹'/ A'。
  2. 將輸出從樹轉換為字節並使用正確的方法加載它 代碼頁使用以下代碼:

tree | %{ [System.Text.Encoding]::GetEncoding('IBM437').GetString($OutputEncoding.GetBytes($_)) }


0
2017-07-30 22:37





你在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>

-1
2017-10-15 13:49



有趣的一點,但我必須說我的經驗不同 - 無論使用控制台還是ISE,樹輸出都是一樣的。您是否安裝了社區擴展,或者這是使用CMD的樹? - Iszi