作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
想要检查 while
中的多个条件循环,但它们不起作用。
#Debug
if ($DatumArray -notcontains $DatumAktuellerFeiertag) {echo "true"} else {echo "false"}
if ($TagAktuellerFeiertag -ne "Samstag") {echo "true"} else {echo "false"}
if ($TagAktuellerFeiertag -ne "Sonntag") {echo "true"} else {echo "false"}
truefalsetrue
Notice, one of the results is "false".
while (($DatumArray -notcontains $DatumAktuellerFeiertag) -and ($TagAktuellerFeiertag -ne "Samstag") -and ($TagAktuellerFeiertag -ne "Sonntag")) {
# some code...
}
while
循环不工作?
$DatumArray
(01.01.2019、19.04.2019、21.04.2019 像这样......)。
$DatumAktuellerFeiertag
是实际的公共(public)假期日期。
$TagAktuellerFeiertag
是实际的公共(public)假期工作日。
$DatumAktuellerFeiertag
由 1。
while (($DatumArray -notcontains $DatumAktuellerFeiertag) -and (($TagAktuellerFeiertag -ne "Samstag") -or ($TagAktuellerFeiertag -ne "Sonntag"))) {
$DatumAktuellerFeiertag = (Get-Date $DatumAktuellerFeiertag).AddDays(1).ToString("dd/MM/yyy")
$TagAktuellerFeiertag = (Get-Date $DatumAktuellerFeiertag -Format "dddd")
echo $DatumAktuellerFeiertag
}
$ListPublicHoliday = Import-Csv 'datum.csv'
$DateArray = $ListPublicHoliday.Datum
$DateArray = $DateArray | ForEach-Object { (Get-Date $_).Date }
$ActuallyDay = Get-Date 19.04.2019
while (($DateArray -contains $ActuallyDay.Date) -or ('Samstag', 'Sonntag' -contains $ActuallyDay.DayOfWeek)) {
$ActuallyDay.AddDays(1)
}
(Get-Date $_).Date
?我在 Microsoft 文档上没有找到这个。
最佳答案
The loop is not performed, even though one of the results is "false". [...] Why is this
while
loop not working?
$false
.您的条件由与
-and
连接的 3 个子句组成运算符,这意味着所有子句的计算结果必须为
$true
循环运行。但是,由于您的第 2 条和第 3 条是互斥的,这永远不会发生。
A && (B || C)
而不是
A && B && C
.
while (($DatumArray -notcontains $DatumAktuellerFeiertag) -and ($TagAktuellerFeiertag -ne "Samstag") -and ($TagAktuellerFeiertag -ne "Sonntag")) {
# some code...
}
while (($DatumArray -notcontains $DatumAktuellerFeiertag) -and (($TagAktuellerFeiertag -ne "Samstag") -or ($TagAktuellerFeiertag -ne "Sonntag"))) {
# some code...
}
-or
联系起来。正如 Mathias 在评论中所怀疑的那样。但是,子句中的运算符不得在此之上被否定(您需要
-contains
和
-eq
而不是
-notcontains
和
-ne
)。此外,如果
$DatumArray
,您的代码会变得更简单。包含
DateTime
对象而不是字符串。两个工作日的比较也可以合二为一。
$DatumArray = $DatumArray | ForEach-Object { (Get-Date $_).Date }
$startDate = ...
$cur = Get-Date $startDate
while (($DatumArray -contains $cur.Date) -or ('Samstag', 'Sonntag' -contains $cur.DayOfWeek)) {
$cur = $cur.AddDays(1)
}
关于PowerShell While循环多个条件不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57072705/
我是一名优秀的程序员,十分优秀!