2011-08-22 75 views
3

我發現我可以在PowerShell中使用$env:Path來查看我當前的系統路徑。然而,一切都在一條線上一起運行。有沒有辦法將$env:Path的輸出管道輸出到另一個命令,這個命令將分別打印每個路徑值(即,對於由分號分隔的所有內容,在新行上打印)?Powershell腳本打印出系統路徑中的每個值

目前它打印是這樣的:

​​

我寧願有這樣的事情:

C:\Some Test Directory\With\Some\Files\In\It 
C:\Some Test Directory\With\Some\Files\In\It 
C:\Some Test Directory\With\Some\Files\In\It 
C:\Some Test Directory\With\Some\Files\In\It 
C:\Some Test Directory\With\Some\Files\In\It 

回答

13
$env:Path.split(";") 

PS C:\Users\user> $env:Path.split(";") 
C:\Program Files (x86)\Haskell\bin 
C:\Program Files (x86)\Haskell Platform\2011.2.0.1\lib\extralibs\bin 
C:\Program Files (x86)\Haskell Platform\2011.2.0.1\bin 
C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common 
C:\Windows\system32 
... 

爲我工作。

+0

那麼容易,謝謝! –

1

在Unix平臺上,你可以簡單地

echo $path | tr ";" "\n" 

可以效仿這一工作流程在Windows上要麼做下面這樣的:

無論是

安裝gnu coreutils,並添加bin目錄到您的系統路徑

  1. 爲您的命令行工具添加一個文件夾到您的系統路徑。例如,「C:\ Program Files(x86)\ bin \」

  2. 下載tr作爲powertools ported from unix的一部分。將它們解壓到其他地方。 (例如, 「C:\ Program Files文件(x86)的\ BIN \ Perl的\」

  3. 添加一個名爲tr.bat這些內容的bat文件到您的bin文件夾:

@echo關閉

perl的 「C:\ Program Files文件(x86)的\ BIN \ Perl的\ TR」 %*

(路徑應該與您提取的Perl工具)


結果

C:\>echo %path% | tr ";" "\n" 
C:\Program Files (x86)\bin\ 
C:\Perl\site\bin 
C:\Perl\bin 
C:\WINDOWS\system32 
C:\WINDOWS 
C:\WINDOWS\System32\Wbem 
C:\WINDOWS\System32\WindowsPowerShell\v1.0\ 
C:\Python27 
... 
+0

雖然這會起作用,但對於您可以輕鬆從PowerShell內部執行的操作,這太過於誇張了。 – SpellingD

+0

也許,但我提供給那些來自unix環境並且沒有興趣/學習PowerShell動機的人(比如我自己)。 – RJFalconer

+0

對不起,聽起來有點居高臨下。我的意思是我現在可以通過「grep Windows」來獲取所有Windows子目錄中的路徑。我不知道如何在Powershell中執行此操作。 – RJFalconer