PowerShell遍歷檔案、資料夾的方法
需要清理某個目錄下的子資料夾下的*.Log 檔案
Get-ChildItem C:\inetpub\logs\LogFiles\ -recurse *.log |Remove-Item -Force
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