मुझे केवल व्यावसायिक घंटों के दौरान एक कोड चलाने की आवश्यकता है। पहले मैं जांचता हूं कि क्या घंटा सुबह 8 बजे से कम है या शाम 7 बजे से अधिक है, अगर यह पूरा नहीं होता है तो मैं अगले दिन समय के अंतर की गणना करता हूं और सो जाता हूं।

#Run the script on business hours
$hour = [int](Get-Date -Format HH)
If ($hour -le 8 -or $hour -gt 18) { 

    $date = Get-Date
    $date = $date.AddDays(1)
    $mmddyyy = $date.ToString("dd/MM/yyyy")
    $nextDy = New-TimeSpan -End "$mmddyyy 08:00"
    Start-Sleep -Seconds $nextDy.TotalSeconds
}

#<code to execute. I don't use functions. A very simple script>

मुझे जो समस्या दिखाई दे रही है वह यह है कि यदि यह उदाहरण के लिए 1AM है, तो स्क्रिप्ट केवल 7 घंटे प्रतीक्षा करने के बजाय अगले दिन तक नहीं चलेगी।

1
user2637202 2 जुलाई 2021, 14:46

2 जवाब

यहाँ मेरा लेना और तारीख गणित है। सुबह 8 बजे से पहले एक अलग मामला है - मैं सोने के समय में एक दिन नहीं जोड़ता। मुझे लगता है कि आपका मतलब शाम 7 बजे '$hour -gt 18' या 6pm नहीं है। तुलना में '8am' और '7pm' स्वचालित रूप से [datetime] में परिवर्तित हो जाते हैं।

$hour = get-date
if ($hour -le '8am') {
  $nextDy = [datetime]'8am' - $hour
  start-sleep $nextDy.totalseconds
} elseif ($hour -gt '7pm') {
  $nextDy = [datetime]'8am' + '1' <#day#> - $hour
  start-sleep $nextDy.totalseconds
}

0
js2010 3 जुलाई 2021, 16:43
#Run the script on business hours
$hour = [int](Get-Date -Format HH)
If ($hour -le 8 ) {
    # Get today at 8am
    $businessStart = [datetime]'08:00'

    # Get difference timespan between business start and now
    $difference = $businessStart - (Get-Date)

    # Get number of seconds to wait (rounded up)
    $totalSecondsToWait = [System.Math]::Ceiling($difference.TotalSeconds)

    Start-Sleep -Seconds $totalSecondsToWait
}
elseif ($hour -gt 18) {
    # Get tomorrow at 8am
    $businessStart = ([datetime]'08:00').AddDays(1)

    # Get difference timespan between business start and now
    $difference = $businessStart - (Get-Date)
    
    # Get number of seconds to wait (rounded up)
    $totalSecondsToWait = [System.Math]::Ceiling($difference.TotalSeconds)
    
    Start-Sleep -Seconds $totalSecondsToWait
}
2
marc_s 2 जुलाई 2021, 20:37