使用 PowerShell 過濾檔案和資料夾
-
在 PowerShell 中使用
Get-ChildItem
Cmdlet 過濾檔案 -
Get-ChildItem
別名 -
在 PowerShell 中使用
Get-ChildItem
Cmdlet 獲取子目錄中的所有檔案 -
在 PowerShell 中使用
Get-ChildItem
Cmdlet 過濾具有特定條件的檔案
在某些情況下,我們需要檢查檔案是否存在於特定位置或目錄中。雖然我們可以使用舊命令 dir
,但僅匯出特定檔案是不夠的。對於這個用例,我們可以使用 Windows PowerShell 的 Get-ChildItem
cmdlet。
本文將討論 PowerShell Get-ChildItem
cmdlet,我們將使用它來獲取目錄中的所有專案並利用其過濾器開關引數。
Windows PowerShell Get-ChildItem
cmdlet 獲取特定位置或目錄中的子項。例如,在 cmdlet 中指定的位置可以是檔案系統目錄、登錄檔或證書儲存。此外,提到的子項可以是另一個目錄、子資料夾或檔案。
Get-ChildItem -Path C:\Temp
在上述命令中,Get-ChildItem
從使用 -Path
引數指定的路徑獲取子項。
Get-ChildItem cmdlet 執行時,在 PowerShell 控制檯上顯示檔案、目錄及其 Mode
、LastWriteTime
、Length
(檔案大小)和 Name
屬性。
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----l 18/01/2022 8:52 pm WindowsPowerShell
d----l 20/12/2021 3:36 pm Zoom
-a---l 30/12/2020 3:23 pm (151) backup phrase.txt
-a---l 17/06/2021 3:13 am (410049) CEF1750.pdf
-a---l 16/05/2020 3:32 am (677) default.cpu1
-a---l 21/08/2019 9:06 am (2240) Default.rdp
-a---l 26/05/2021 8:24 am (63399) e-sig.jpg
-a---l 09/03/2020 10:48 pm (143) fan config.sfsm
-a---l 19/09/2020 12:07 pm (279515089) MCSA.rar
在 PowerShell 中使用 Get-ChildItem
Cmdlet 過濾檔案
我們可以使用 -File
開關引數僅返回路徑或目錄內的檔案。
示例程式碼:
Get-ChildItem -Path C:\Temp -File
輸出:
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---l 30/12/2020 3:23 pm (151) backup phrase.txt
-a---l 17/06/2021 3:13 am (410049) CEF1750.pdf
-a---l 16/05/2020 3:32 am (677) default.cpu1
-a---l 21/08/2019 9:06 am (2240) Default.rdp
-a---l 26/05/2021 8:24 am (63399) e-sig.jpg
-a---l 09/03/2020 10:48 pm (143) fan config.sfsm
-a---l 19/09/2020 12:07 pm (279515089) MCSA.rar
Get-ChildItem
別名
Windows PowerShell 為 Get-ChildItem
cmdlet 使用預設的內建別名 gci
。就像下面的示例片段一樣,你可以使用別名而不是 cmdlet 來實現更快和無縫的指令碼編寫。
示例程式碼:
gci -Path C:\Temp -File
在 PowerShell 中使用 Get-ChildItem
Cmdlet 獲取子目錄中的所有檔案
如果我們想獲取目錄和子目錄中的所有檔案,請使用 -Recurse
開關引數。
示例程式碼:
gci -Path C:\Temp -Recurse - Force -File
-Force
引數允許 cmdlet 獲取使用者無法訪問的專案,例如系統檔案或隱藏檔案。Force 引數不會覆蓋安全限制。供應商之間的實施有所不同。在 PowerShell 中使用 Get-ChildItem
Cmdlet 過濾具有特定條件的檔案
使用 -Filter
引數,我們可以使用單個表示式過濾掉結果。 -Filter
引數不需要 -Path
引數,因為它將使用你當前的工作目錄。
示例程式碼:
gci -Filter C:\Temp\* -Filter *.txt
我們還可以使用 -Include
開關引數,它接受多個條件,這是 -Filter
引數的一個絕佳優勢。但是,請記住 -Include
引數需要 -Path
引數出現在表示式中。
示例程式碼:
gci -Path C:\Temp\* -File -Include CEF*.pdf, *.txt
除了接受多個條件之外,-Include
引數與正規表示式配合得很好,因此使其成為比 -Filter
引數更通用的方法。
輸出:
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---l 30/12/2020 3:23 pm (151) backup phrase.txt
-a---l 17/06/2021 3:13 am (410049) CEF1750.pdf
-Include
開關引數時,路徑的末尾應包含萬用字元星號 (*
)。此萬用字元表示你正在查詢具有在 -Include
引數中定義的特定副檔名的所有路徑子項。Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.
LinkedIn相關文章 - PowerShell File
- 使用 PowerShell 從路徑中提取檔名
- 使用 PowerShell 連線檔案
- 在 PowerShell 中使用 FTP 上傳檔案
- 在 PowerShell 中獲取檔案版本
- 在 PowerShell 中獲取檔案的完整路徑
- 在 Windows PowerShell 中逐行讀取檔案