วันในสัปดาห์


2

ฉันควรทำอย่างไรถ้าฉันต้องการจัดตารางงานเช่นวันที่ห้าในเดือน แต่ไม่ใช่ช่วงวันหยุดสุดสัปดาห์ ตัวอย่าง: ถ้าวันที่ห้าเป็นวันเสาร์ดังนั้นงานจะถูกกำหนดในวันจันทร์

ขอบคุณสำหรับคำตอบ


1
หากคุณไม่ต้องการกำหนดเวลาทำงานในวันเสาร์เพราะพีซีออฟไลน์อยู่เพียงตรวจสอบ: เรียกใช้โดยเร็วที่สุด
LPChip

ที่จริงแล้วงานนี้จะทำงานบนเซิร์ฟเวอร์ดังนั้นสิ่งที่ทางออกของคุณอาจไม่ทำงานเพราะเซิร์ฟเวอร์ออนไลน์อยู่เสมอ
kubo

ตรวจสอบว่าวันนั้นเป็นวันหยุดสุดสัปดาห์หรือไม่และกำหนดเวลากิจกรรมครั้งเดียวในวันจันทร์หน้า
phuclv

คำตอบ:


1

ด้านล่างเป็นโซลูชันที่ฉันเคยใช้ในอดีตสำหรับงานที่คล้ายกันซึ่งฉันแก้ไขเล็กน้อยเพื่อให้สามารถช่วยเหลือคุณได้ เคล็ดลับคือการให้ตัวกำหนดเวลางานดำเนินการสคริปต์ชุดงานและให้ชุดสคริปต์ที่ดำเนินการมีตรรกะในการทำการตรวจสอบเงื่อนไขในการเรียกใช้หรือไม่

คุณสามารถใช้CALLหรือSTARTเรียกใช้ไฟล์ปฏิบัติการ (แอพ), แบตช์สคริปต์อื่น, รันสคริปต์ PowerShell และสคริปต์ประเภทอื่น ๆ บางครั้งTask Schedulerอาจไม่แข็งแรงพอสำหรับความต้องการกำหนดการพิเศษเช่นในกรณีนี้

เป็นหลักแก้ปัญหานี้จะ . .

  • เรียกมันรัน ทุกเดือนบน5th, 6thและ7thดังนั้นหากเสาร์เป็น5th, อาทิตย์เป็น6thแล้วจันทร์ จะเป็น7thแต่แม้ว่าอาทิตย์เป็น5thหรือ6thมันจะยังคงทำงานในจันทร์6thหรือ7th

    ป้อนคำอธิบายรูปภาพที่นี่

  • รวมสคริปต์ชุดที่จะทำงานบางตรรกะเงื่อนไขเริ่มต้นที่จะตรวจสอบวันของสัปดาห์และดำเนินการตามเงื่อนไขเหล่านี้หรือไม่ที่จะสร้างไฟล์ที่มีคำว่าRun ในนั้น แต่ถ้ามันมีอยู่แล้วได้รับการสร้างขึ้นด้วยRunการที่ เดือนแล้วEXIT

Batch Script

หมายเหตุ: สิ่งเดียวที่คุณต้องปรับด้วยนี่คือการใช้พา ธ ที่ถูกต้องในSET RunFile=C:\SomeFolder\SomePath\ส่วนที่จะทำให้มันเป็นโฟลเดอร์ที่ถูกต้องหรือเส้นทาง UNC เพื่อสร้างไฟล์ทำงาน ฯลฯ จากนั้นให้ทำการ<Rest of logic needed >รันหรือรันตรรกะหรือสคริปต์ใด ๆ ก็ตามTask Schedulerกำลังทำงานอยู่ในขณะนี้

@ECHO ON

::: -- Set date variables for conditional logic for the current date and day of week
FOR /F "TOKENS=1 DELIMS=." %%A IN ('WMIC OS GET LocalDateTime ^| FIND "."') DO SET rundt=%%~A
SET rundt=%rundt:~0,6%
FOR /F "TOKENS=1 DELIMS=." %%A IN ('WMIC PATH Win32_LocalTime GET DayOfWeek ^| FINDSTR /R [0-9]') DO SET DOW=%%~A

::: -- If the day today is 6 for Saturday or 7 for Sunday then EXIT
IF %DOW%==6 EXIT
IF %DOW%==7 EXIT

::: -- Set the run file location to create a file with "run" in it if the day is correct
SET RunFile=C:\SomeFolder\SomePath\%rundt%.run

::: -- If "Run" already found in "~\<YYYYMM>.run" file then do not run because it already has this month
FINDSTR /I Run "%RunFile%"
IF ERRORLEVEL 1 (GOTO :Run) ELSE (EXIT)

:Run
ECHO Run>"%RunFile%"
<Rest of logic needed    >
<CALL C:\folder\app.exe  >

EXIT

แหล่งข้อมูลเพิ่มเติม

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.