簡體   English   中英

如何使用Powershell保留特定文件夾並刪除其余文件

[英]How to keep a specific folder and delete rest of the files using powershell

我正在嘗試刪除一個文件夾中的所有文件,但是有一個名為picture的文件夾,我想保留它,但不知道該怎么做。 我正在使用以下腳本,它將刪除文件夾中的所有內容

 if ($message -eq 'y')
 {
 get-childitem "C:\test" -recurse | % { 
remove-item $_.FullName -recurse 

}

}

一種解決方案是使用類似:

Get-ChildItem -Path "c:\test" -Recurse | Where-Object { $_.FullName -cnotmatch "\\Pictures($|\\)" -and (Get-ChildItem $_.FullName -Include "Pictures" -Recurse).Length -eq 0 } | Remove-Item -Recurse -ErrorAction SilentlyContinue;

我懷疑必須有一種更優雅的方法來做到這一點。 這是這樣做的:它遞歸枚舉C:\\ test文件夾中的所有文件( Get-ChildItem ),然后使用Where-Object從結果列表中刪除所有項目,其中路徑包含要排除的目錄(使用regex語法指定) ),或者當相關項目的子項目包含要排除的文件或目錄時。 結果列表將饋送到Remove-Item進行刪除。 應用-ErrorAction SilentlyContinue開關可防止通過遞歸刪除記錄錯誤。

Get-ChildItem $PSScriptRoot -Force| Where-Object {$_.Name -ne "Pictures"} | Remove-Item -Recurse

我只是試過了,對我有用。 如果要更改刪除的內容,只需更改“圖片”。 這使用$ PSScriptRoot作為路徑,該路徑是Powershell腳本的執行路徑。 您可以將其重命名為要刪除的路徑。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM