所以我的老板需要我创建一个脚本来删除目录中的所有内容,但名称为“incoming”和“outgoing”的文件夹除外,同时仍然删除这些文件夹中的所有文件和目录。这两个文件夹也存储在随机公司名称文件夹中,所以我不能指定每个文件夹,因为列表会不断增长。
如何删除所有传入和传出文件夹内容而不删除存储这些文件夹的文件夹?
这是我到目前为止的代码:
Get-ChildItem -Path ("C:\Users\testuser\Desktop\Test") -Exclude "Incoming","Outgoing" | foreach ($_) {
"CLEANING :" + $_.FullName
Remove-Item $_.FullName -Force -Recurse
"CLEANED... :" + $_.FullName
}
这是正确的做法吗?是否有一个开关或我应该添加到此命令以添加额外选项的东西?这个脚本将每天通过我要设置的Windows任务运行。也许有一种方法可以指定删除脚本的深度?
答案 0 :(得分:0)
希望这就是你所需要的。这应删除文件夹下的文件和文件夹" Incoming"和"外出。"
$folders = Get-ChildItem -Path "C:\Users\mkrouse\Desktop\Test" -Recurse -Directory | Where-Object {($_.basename -contains "Incoming") -or ($_.BaseName -contains "Outgoing")}
foreach($folder in $folders){
$items = Get-ChildItem -Path $folder.FullName -Recurse
foreach($file in $items) {
Remove-Item -Path $file.FullName -Recurse -Force -WhatIf
}
}