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
}
}
我希望代码返回包含内容的文件夹名称(确实如此)。但是,如果存在一个包含内容的文件夹所在的空文件夹,则两者都将返回。如果删除文件夹的内容,则不会返回任何内容。
答案 0 :(得分:3)
要查看包含文件的每个子文件夹,请使用-file
cmdlet的参数-recurse
和Get-ChildItem
:
$a = $path0, $path1, $path2
foreach ($element in $a) { Get-ChildItem -Path $element\$date1 -file -Recurse | foreach {$_.Directory.Name} | select -uniq }