首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >周中循环+营业时间

周中循环+营业时间
EN

Stack Overflow用户
提问于 2017-12-26 19:33:09
回答 2查看 995关注 0票数 3

我正在写一个脚本,它只在上午8点到下午5点运行。问题是,当它从8-5或M while()循环中掉下来后,它只是.不知道如何重新进入循环。这使我想,我可能是从错误的角度接近我的脚本。也许有更好的方法。

“做点什么”部分是比较同一文件之间5分钟间隔的文件大小。这是为了检查文件是否正在增长/缩小。

代码语言:javascript
复制
# Declare current date/time
$Weekday = [int](Get-Date).DayOfWeek
$hour = [int](Get-Date -Format HH)

while (1 -eq 1) {   # always true
    $Weekday = [int](Get-Date).DayOfWeek
    $hour = [int](Get-Date -Format HH)
    while ($Weekday -ge 1 -and $Weekday -le 5) {  # weekday
        $Weekday = [int](get-date).DayOfWeek    # loop check for current day
        while ($hour -ge 8 -and $hour -le 16) { # 8AM-5PM
            $hour = [int](get-date -format HH)  # loop check for current hour
            # Do Something
        }
        else {
            # Sleep until next business hour
            $date = Get-Date
            $date = $date.AddDays(1)
            $mmddyyy = $date.ToString("MM/dd/yyy")
            $nextDy = New-TimeSpan -End "$mmddyyy 08:00"
            Write-Host "Start sleep timer until next 8AM"
            Start-Sleep -Seconds $nextDy.TotalSeconds
        }
    }
    else {
        # Sleep until next business day
        $date = Get-Date
        while ($Date.DayOfWeek -ne "Monday") {$date = $date.AddDays(1)}
        $mmddyyy = $date.ToString("MM/dd/yyy")
        $nextBu = New-TimeSpan -End "$mmddyyy 08:00"
        Write-Host "Start sleep timer until next Monday 8AM"
        Start-Sleep -Seconds $nextBu.TotalSeconds
    }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-12-26 21:17:54

  1. 尝试使用计划的任务或服务。
  2. 如果您想使用PowerShell脚本,请尝试使用以下命令: 时间($true) {#工作日$Weekday = 整型.DayOfWeek #循环检查当前日$hour = 整型如果($Weekday -le 5 -and $Weekday -ge 1) { while ($hour -ge 8 -and $hour -le 16) {#上午8时-下午5pm $hour =$hour#循环检查当前时间#做某事}} $date = Get-Date $date = $date.AddDays(1) $mmddyyy = $date.ToString("MM/dd/yyy") $nextDy = New-TimeSpan -End "$mmddyyy 08:00“写-主机”启动睡眠定时器,直到下一个上午8点“开始-睡眠-Seconds $nextDy.TotalSeconds }
票数 2
EN

Stack Overflow用户

发布于 2017-12-26 21:18:23

我觉得你完全搞错了。

最好使用像TestFileSizeUtil这样的简单库函数来实现监视文件大小,或者像这里那样使用WMI。

代码语言:javascript
复制
$query = "Select * from __InstanceModificationEvent WITHIN 5 WHERE TargetInstance ISA 'CIM_DataFile' AND TargetInstance.Name='C:\\Logs\\test.log'"

Register-WmiEvent -Query $query -Action {
    Write-Host "Current file size is: " $Event.SourceEventArgs.NewEvent.TargetInstance.FileSize
    $prevSize = $Event.SourceEventArgs.NewEvent.PreviousInstance.FileSize
    $curSize = $Event.SourceEventArgs.NewEvent.TargetInstance.FileSize
    if ($curSize -gt $prevSize) {
        $bytes = $curSize - $prevSize
        Write-Host "File grew by: $bytes bytes"
    } else {
        $bytes = $prevSize - $curSize
        Write-Host "File reduced by: $bytes bytes"
    }
}

那么,如果您的脚本一整天都在运行,那就不重要了。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47982962

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档