我正在尝试使用 do while 循环来删除多个目录中的旧文件(从最旧的开始),直到剩下一个,此时程序应该结束。该程序也应该只在运行时目录中有多个文件时才运行。
这是我的环境:
- 顶部文件夹
- 文件夹 1
- 文件夹 2
- ETC
在文件夹 1、文件夹 2 等中应该只有一个文件。如果其中只有一个文件,则该脚本应该删除除最新文件之外的所有内容,并且什么都没有。
我使用以下代码半完成了这一点:
$basedir = "C:\Test"
Set-Location -Path C:\Test
$a = Get-ChildItem -recurse $basedir
if ($a.Count -gt 1) {
do
{
$a | Sort-Object LastWriteTime -Descending | Select-Object -Last 1 | remove-item
}
while
(
$a.Count -gt 1
)
}
- 它只会在存在多个文件时运行,这是正确的。
- 它正确地删除了最旧的文件,但随后它继续尝试删除同一文件而不是重新检查目录。
- 在这一点上,我需要帮助的只是让它在删除文件后重新运行循环,而不是试图一遍又一遍地删除同一个文件。
真诚地感谢您的任何帮助,如果之前已经回答过,我深表歉意。我做了很多搜索,但找不到与我的情况有关的东西。
布拉德