PowerShell遍歷文件夾下的子文件夾和文件是一件很容易的事兒。Get-ChildItem這個cmdlet就有一個recurse參數是用于遍歷文件夾的。
PowerShell中,使用Get-ChildItem來獲取文件夾下面的子文件夾和文件(當然,它的功能不僅于此)。然后我們可以使用ForEach-Object的cmdlet來循環遍歷下面的子對象。然后通過psiscontainer 屬性來判斷是文件夾還是文件。
Get-ChildItem,獲取指定對象的所有子對象集合。
舉例:
#獲取D:\對象,返回值類型為System.IO.DirectoryInfo
Get-ChildItem D:\
#輸出D:\下所有文件的文件名
Get-ChildItem D:\ | ForEach-Object -Process{
if($_ -is [System.IO.FileInfo])
{
Write-Host($_.name);
}
}
#列出今天創建的文件
Get-ChildItem D:\ | ForEach-Object -Process{
if($_ -is [System.IO.FileInfo] -and ($_.CreationTime -ge [System.DateTime]::Today))
{
Write-Host($_.name,$_.CreationTime);
}
}
#找出D盤根目錄下的所有文件
Get-ChildItem d:\ | ?{$_.psiscontainer -eq $false}
如果要找文件夾,則把$false換成$true