powershell - 测试路径在空文件夹上返回 true
问题描述
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
}
}
如果它有内容,我希望代码返回文件夹名称,它确实如此。但是,如果在包含内容的文件夹所在的位置存在空文件夹,则会返回两者。如果您拿走文件夹的内容,则不会返回任何内容。
解决方案
为了能够查看包含文件的每个子文件夹,请使用cmdlet的参数-file
和 :-recurse
Get-ChildItem
$a = $path0, $path1, $path2
foreach ($element in $a) { Get-ChildItem -Path $element\$date1 -file -Recurse | foreach {$_.Directory.Name} | select -uniq }
推荐阅读
- flutter - Flutter in_app_purchase 插件的正确实现多消耗品
- php - 如何在 dokan lite 插件中到处用“Artist”替换“vendor”字符串?
- firebase - 关于 Firebase 云消息主题与群组的问题
- php - 创建新产品时添加 meta_key
- python - 为什么我的 webdriver.chrome() 不工作?
- python - 检查一个范围内的数字是否为质数,如果不是,返回所有因数
- c - 如果某个参数没有出现在命令行中,我该如何使它无法运行?
- vue.js - firestore 按字段值删除文档
- pine-script - Pinescript - 为什么在触发 strategy.exit() 时不能正确调整 strategy.position_avg_price?
- erlang - Erlang:函数在 shell 中工作,但不在 YAWS 中