删除除指定文件之外的所有文件夹和文件?

0 windows-7 file-management powershell

情况:

我有多个文件夹和文件,如下所示:

C:\Users\myname\Desktop\project1\english\folder1\file1
C:\Users\myname\Desktop\project1\english\folder1\file2
C:\Users\myname\Desktop\project1\english\folder1\file3
C:\Users\myname\Desktop\project1\english\folder2\file4
C:\Users\myname\Desktop\project1\english\folder2\file5
C:\Users\myname\Desktop\project1\chinese\folder1\file1
C:\Users\myname\Desktop\project1\chinese\folder1\file2
C:\Users\myname\Desktop\project1\chinese\folder1\file2
C:\Users\myname\Desktop\project1\chinese\folder2\file4
C:\Users\myname\Desktop\project1\chinese\folder2\file5
Run Code Online (Sandbox Code Playgroud)

目标:

我想删除除“folder1”和“file1”之外的所有文件夹和文件,这样我就只剩下这个:

C:\Users\myname\Desktop\project1\english\folder1\file1
C:\Users\myname\Desktop\project1\chinese\folder1\file1
Run Code Online (Sandbox Code Playgroud)

问题:

这可以用 Powershell 来完成吗?

我之前问过类似的问题,一位出色的用户建议了以下解决方案,但它只删除文件,而不删除文件夹。

$toKeep = "File1", "File3"
gci startFolder -Recurse | ? { !$_.PSIsContainer } | ? { $toKeep -notcontains $_.Name } | remove-item -WhatIf
Run Code Online (Sandbox Code Playgroud)

Tay*_*ibb 5

电源壳3:

Get-ChildItem -Path "C:\Users\myname\Desktop\project1\english\" -File -Recurse |
Where-Object { $_.Name -ne "file1.txt" -and $_.Parent -notin ("folder1","folder2") } |
Remove-Item
Run Code Online (Sandbox Code Playgroud)