此代码应在当前目录中的所有顶级目录中,执行临时文件检查,如果不存在,则会移动目录。
$processDirectories = {
foreach ($childDirectory in Get-ChildItem -Force -Directory) {
test-path "$childDirectory*.tmp"
move-item -LiteralPath "$childDirectory" -Destination "d:"
}
}
我不知道如何停止在找到*.tmp
的目录中运行代码。再加上此方法仅检查*.tmp
的每个细胞的根,而不是内部的整个树。
如果我了解您的限制,这里有两个变体,
计算子文件夹中*.tmp
的数量。如果零,则将文件夹移动。
-
迭代第一级文件夹
foreach ($childDirectory in Get-ChildItem -Force -Directory) { if ((Get-ChildItem $childDirectory -recurse -Include *.tmp, *.!qb).Count -eq 0){ Move-Item -LiteralPath "$childDirectory" -Destination "d:" -WhatIf } }
-
单个管道
Get-ChildItem -Force -Directory | Where-Object { (Get-ChildItem $_ -recurse -Include *.tmp, *.!qb).Count -eq 0} | Move-Item -Destination "d:" -WhatIf
如果输出看起来还不错,请删除尾随的-WhatIf
只需使用 if
foreach ($childDirectory in Get-ChildItem -Force -Directory) {
if (!(test-path "$childDirectory*.tmp")) {
move-item -LiteralPath "$childDirectory" -Destination "d:"
}
}
关于子目录,使用-Recurse
Get-ChildItem
的开关。