繁体   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