如果 *.tmp 存在于其中的任何位置,如何不对目录进行操作?
How to not operate on a directory if *.tmp exists anywhere in it?
此代码应遍历当前目录中的所有顶级目录,执行临时文件检查,如果 none 存在,则移动目录。
$processDirectories = {
foreach ($childDirectory in Get-ChildItem -Force -Directory) {
test-path "$childDirectory\*.tmp"
move-item -LiteralPath "$childDirectory" -Destination "d:\"
}
}
我不知道如何停止 运行 找到 *.tmp
的目录的代码。另外,此方法仅检查每个子目录的根 *.tmp
而不是其中的整个树。
只需使用if
foreach ($childDirectory in Get-ChildItem -Force -Directory) {
if (!(test-path "$childDirectory\*.tmp")) {
move-item -LiteralPath "$childDirectory" -Destination "d:\"
}
}
关于子目录,使用Get-ChildItem
的-Recurse
开关。
如果我了解您的限制,这里有两种变体,
计算子文件夹中 *.tmp
的数量。如果为零,则 Move-Item 文件夹。
迭代第一级文件夹
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
此代码应遍历当前目录中的所有顶级目录,执行临时文件检查,如果 none 存在,则移动目录。
$processDirectories = {
foreach ($childDirectory in Get-ChildItem -Force -Directory) {
test-path "$childDirectory\*.tmp"
move-item -LiteralPath "$childDirectory" -Destination "d:\"
}
}
我不知道如何停止 运行 找到 *.tmp
的目录的代码。另外,此方法仅检查每个子目录的根 *.tmp
而不是其中的整个树。
只需使用if
foreach ($childDirectory in Get-ChildItem -Force -Directory) {
if (!(test-path "$childDirectory\*.tmp")) {
move-item -LiteralPath "$childDirectory" -Destination "d:\"
}
}
关于子目录,使用Get-ChildItem
的-Recurse
开关。
如果我了解您的限制,这里有两种变体,
计算子文件夹中 *.tmp
的数量。如果为零,则 Move-Item 文件夹。
迭代第一级文件夹
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