测试路径在空文件夹上返回true

时间:2019-01-08 13:18:46

标签: powershell scripting

Test-Path返回true,或者如果它们与返回true的文件夹位于非空文件夹位于同一目录,则至少看起来是在空白文件夹中。

我尝试调整通配符位置,添加其他\来更改路径,以查看是否可以减少返回的文件夹的数量,但是我不能。我假设foreach部分和Test-Path将分别检查每个文件夹并返回结果,但是一旦看到内容,它就会出现,此后所有文件夹都返回true。

[int]$subDay = Read-Host "Enter days to subtract"

$date0 = (Get-Date).AddDays(-$subDay).ToString("yy") +
         ((Get-Date).AddDays(-$subDay).DayOfYear).ToString("D3")
$date1 = (Get-Date).AddDays(-$subDay).ToString("yyyy") +
         ((Get-Date).AddDays(-$subDay).DayOfYear).ToString()

$path0 = ".\11"
$path1 = ".\12"
$path2 = ".\13"

$a = $path0, $path1, $path2    

function Split {
    Param ($split)

    Split-Path -Parent $split |
        Get-Item |
        Select-Object -ExpandProperty Name |
        Add-Content $archLog    

    foreach ($element in $a) {
        if (Test-Path $element\$date1\"$date0*"\*) {
            Split $element\$date1
            Split $element\$date1\"$date0*"\*
        } else { 
            Split $element\$date1
            Write-Output "Folders do not exist or are empty." |
                Add-Content $archlog
        }
    }

我希望代码返回包含内容的文件夹名称(确实如此)。但是,如果存在一个包含内容的文件夹所在的空文件夹,则两者都将返回。如果删除文件夹的内容,则不会返回任何内容。

1 个答案:

答案 0 :(得分:3)

要查看包含文件的每个子文件夹,请使用-file cmdlet的参数-recurseGet-ChildItem

$a = $path0, $path1, $path2
foreach ($element in $a) { Get-ChildItem -Path $element\$date1 -file -Recurse | foreach {$_.Directory.Name} | select -uniq }