[英]Powershell v1 - deleteing all files & folders except in a named folder
我想刪除給定根文件夾的所有內容和子項,但是我想保留一些文件(日志),它們都駐留在logs文件夾中。在powershell中執行此操作的優雅方法是什么。 目前我正在進行多個步驟,當然這可以輕松完成...我有一種感覺我的oo-ness /語言偏見正在阻礙
例如
C:\\ TEMP
C:\\ TEMP \\日志
C:\\ TEMP \\日志\\ mylog.txt
C:\\ TEMP \\日志\\ myotherlog.log
C:\\ TEMP \\ filea.txt
C:\\ TEMP \\ fileb.txt
C:\\ TEMP \\ folderA ...
C:\\ TEMP \\ FolderB中...
刪除后應該只是
C:\\ TEMP
C:\\ TEMP \\日志
C:\\ TEMP \\日志\\ mylog.txt
C:\\ TEMP \\日志\\ myotherlog.log
這應該很簡單; 我想12:47 amitis讓我...
提前致謝
RhysC
dir c:\\ temp | 其中{$ _。name -ne'logs'} | Remove-Item -Recurse -force
這是一般解決方案:
function CleanDir($dir, $skipDir) {
write-host start $dir
Get-ChildItem $dir |
? { $_.PsIsContainer -and $_.FullName -ne $skipDir } |
% { CleanDir $_.FullName $skipDir } |
? { $skipDir.IndexOf($_, [System.StringComparison]::OrdinalIgnoreCase) -lt 0 } |
% { Remove-Item -Path $_ }
Get-ChildItem $dir |
? { !$_.PsIsContainer } |
Remove-Item
$dir
}
CleanDir -dir c:\temp\delete -skip C:\temp\delete\logs
它遞歸工作。 CleanDir
的第一個參數是起始目錄。 第二個( $skipDir
)是不應刪除的目錄(其內容不應該也是如此)。
編輯:糾正混亂的例子;)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.