簡體   English   中英

Powershell v1 - 刪除指定文件夾以外的所有文件和文件夾

[英]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.

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