【问题标题】:If / else on powershell如果/否则在powershell上
【发布时间】:2013-05-17 18:11:49
【问题描述】:

我目前正在学习如何使用 powershell,并且想知道您将如何制作像这样的简单过程。

如果时间在上午 9 点到下午 12 点之间,请写信给“喝咖啡”,否则 什么都不写。

【问题讨论】:

  • 在 powershell 控制台中输入:Get-Help about_if
  • 嗨@lolbol,欢迎来到堆栈溢出,您会从简短的回复中注意到,人们希望问题能够显示您的尝试,所以至少我们都可以看到付出的努力。您越多提出问题,你就会得到更多。
  • 我通常把人们推荐给whathaveyououtried dot com :)

标签: powershell if-statement


【解决方案1】:

有很多方法可以做到这一点。

if ((9,10,11) -contains (get-date).Hour) { "get coffee" }

if ((get-date).hour -ge 9 -and (get-date).hour -le 11) { "get coffee" }

if (((get-date -hour 12 -min 0 -sec 0) - (get-date)).hours -in 0..2) { ... }

这可能是一个有趣的社区 wiki 问题。

【讨论】:

  • 我认为这个问题不需要更多的答案,但这里有另一种选择:if((Get-Date).Hour -match '9|10|11|12'){'Get -咖啡'}
【解决方案2】:

这是我能想到的最简短的......

if(Get-Date | ? {($_.hour -ge 9) -and ($_.hour -le 12)}){"get coffee"}

【讨论】:

  • 从技术上讲,直到 12.59 的结果都为真。你真的想要 -le 11,去 11.59。
  • 嗯,它完全符合 OP 所说的问题定义。问题定义有些模糊,因为 9-12 可能是几分钟或几小时。
  • 再次阅读问题...哈哈哈,对不起。它需要澄清。
  • 这不是堆栈交换站点Programming Puzzles & Code Golf,通过使用缩写别名和缺少格式来缩短代码对于初学者来说通常并不像 OP 实际要求的那样简单。
【解决方案3】:

我的 2 美分(使用 .net):

[datetime]$now = [datetime]::now.Tostring("T",[System.Globalization.CultureInfo]::InvariantCulture )
$low = [datetime] "09:00:00 am"
$hi = [datetime] "12:00:00 pm"
if ( $now -ge $low -and $now -le $hi  ) { "Coffee Time!" } else {"Work!"}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多