คำสั่งหยุดชั่วคราวและรอไฟล์แบทช์: วิธีควบคุมการไหลของสคริปต์ของคุณ

Kha Sang Hyud Chawkhraw Laea Rx Fil Bae Thch Withi Khwbkhum Kar Hil Khxng Skhript Khxng Khun



ในการเขียนสคริปต์เป็นชุดบน Windows นักพัฒนาสามารถควบคุมโฟลว์ของสคริปต์ของคุณโดยใช้เทคนิคหรือวิธีการต่างๆ เพื่อแนะนำการหยุดชั่วคราวหรือการรอ คำสั่ง 'หยุดชั่วคราว' และ 'รอ' เป็นสองวิธีในการควบคุมการไหลของไฟล์แบตช์ของคุณ คำสั่ง 'หยุดชั่วคราว' หยุดการทำงานของไฟล์แบตช์ในขณะที่แสดงข้อความ 'กดปุ่มใดก็ได้เพื่อดำเนินการต่อ...' ไฟล์แบตช์ไม่สามารถทำงานได้จนกว่าผู้ใช้จะกดปุ่ม การดำเนินการของไฟล์แบตช์ถูกระงับตามจำนวนวินาทีที่ระบุโดยคำสั่งรอ

คำสั่งหยุดไฟล์แบตช์

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







ไวยากรณ์ของคำสั่ง 'หยุดชั่วคราว' คือ:



หยุดชั่วคราว

แจ้งให้ผู้ใช้ป้อนข้อมูล

คำสั่ง 'หยุดชั่วคราว' ในสคริปต์ชุดต่อไปนี้จะแสดงข้อความ 'กดปุ่มใดก็ได้เพื่อดำเนินการต่อ...' เมื่อผู้ใช้เรียกใช้ไฟล์ชุดนี้ ก่อนที่ไฟล์แบตช์จะย้ายไปยังคำสั่ง 'dir' ผู้ใช้จะต้องกดปุ่ม



@ปิดเสียงสะท้อน

rem ไฟล์แบตช์นี้หยุดชั่วคราวเพื่อให้ผู้ใช้กดปุ่ม

echo สวัสดี ยินดีต้อนรับสู่การสาธิตคำสั่ง PAUSE

การดำเนินการสคริปต์ echo จะดำเนินต่อไปหลังจากการหยุดชั่วคราว

หยุดชั่วคราว

rem ไฟล์แบตช์นี้ดำเนินการต่อด้วยคำสั่งถัดไป

สะท้อน ขอบคุณ!

คุณ





เมื่อผู้ใช้กดปุ่มใดๆ โดยใช้คีย์บอร์ด กระบวนการแบทช์นี้จะดำเนินต่อไป:



คำสั่งรอไฟล์แบตช์

รหัสที่คุณระบุเป็นไฟล์แบตช์ที่เปิดสองโปรแกรม: Notepad และ Paint รหัสมีดังนี้:

@ปิดเสียงสะท้อน

echo การเริ่มโปรแกรมแรก

เริ่ม /B /รอ notepad.exe

echo Notepad เปิดในพื้นหลังสำเร็จแล้ว

echo การเริ่มต้นโปรแกรมที่สอง

เริ่ม/รอ mspaint.exe

echo เปิด Paint สำเร็จแล้ว

คำสั่ง /k

บรรทัดแรก “@echo off” ป้องกันไม่ให้แบตช์ไฟล์แสดงคำสั่งในขณะที่ดำเนินการ

ผู้ใช้จะได้รับแจ้งว่าโปรแกรมแรกกำลังเปิดใช้งานโดยบรรทัดที่สองซึ่งก็คือ 'echo การเริ่มต้นโปรแกรมแรก'

บรรทัดที่สาม “START /B /WAIT notepad.exe” จะเปิดโปรแกรม Notepad ในหน้าต่างพื้นหลังและรอให้โปรแกรมเสร็จสิ้นก่อนดำเนินการต่อ สวิตช์ “/B” บอกให้คำสั่ง START รันโปรแกรมในหน้าต่างพื้นหลัง และสวิตช์ “/WAIT” บอกให้คำสั่ง START รอให้โปรแกรมทำงานเสร็จก่อนดำเนินการต่อ

บรรทัดที่สี่อ่าน echo Notepad เมื่อเปิด Notepad ในเบื้องหลังได้สำเร็จ ระบบจะแจ้งผู้ใช้ด้วยข้อความเท่านั้น

บรรทัดที่ห้า “echo การเริ่มต้นโปรแกรมที่สอง” เพียงแสดงข้อความให้ผู้ใช้ทราบว่าโปรแกรมที่สองกำลังเริ่มต้น

บรรทัดที่หก “START /WAIT mspaint.exe” จะเปิดโปรแกรม Paint ในหน้าต่างพื้นหลัง และไม่รอให้โปรแกรมเสร็จสิ้นก่อนดำเนินการต่อ

บรรทัดที่เจ็ด 'echo The Paint is Opened Success' จะแสดงข้อความให้ผู้ใช้ทราบว่า Paint ได้รับการเปิดเรียบร้อยแล้ว

บรรทัดที่แปด “cmd /k” จะเปิดหน้าต่างพรอมต์คำสั่งใหม่และเปิดหน้าต่างพรอมต์คำสั่งปัจจุบันไว้

การใช้ลูปสำหรับดีเลย์แบบกำหนดเอง

เราสามารถใช้การวนซ้ำสำหรับความล่าช้าที่กำหนดเองในกระบวนการแบทช์ นี่คือตัวอย่าง:

ในตัวอย่างนี้ ข้อความแรกจะแสดงต่อผู้ใช้เมื่อมีการเรียกใช้ไฟล์แบตช์นี้ ข้อความแรกจะปรากฏขึ้นอีกครั้งเมื่อการวนซ้ำ 'for' เริ่มต้นขึ้น คำสั่งหมดเวลาจะหยุดแบตช์ไฟล์เป็นเวลาหนึ่งวินาทีก่อนที่จะแสดงข้อความที่สอง ข้อความสุดท้ายจะปรากฏขึ้นหลังจากการวนซ้ำทั้งหมด 10 ครั้ง

@ปิดเสียงสะท้อน

สะท้อนการสาธิตความล่าช้าโดยใช้ Loop

สำหรับ /l  %%i ใน (1,1,10) ทำ (

หมดเวลา /t 1 /nobreak > nul

echo ข้อความนี้แสดงหลังจาก %%i วินาที

)

echo ข้อความนี้แสดงการหน่วงเวลา 10 วินาที

การใช้การหมดเวลาสำหรับการหน่วงเวลา

คำสั่งหมดเวลาของไฟล์แบตช์จะหยุดการทำงานของไฟล์แบตช์ชั่วคราวตามจำนวนวินาทีที่กำหนดไว้ล่วงหน้า ไวยากรณ์ได้รับที่นี่:

หมดเวลา /t [/nobreak]

สวิตช์ “/t” ระบุระยะเวลาในการรอเป็นวินาที สวิตช์ “/nobreak” จะปิดใช้งานการกดปุ่มจากผู้ใช้เพื่อหยุดการหน่วงเวลา

คำสั่ง 'หมดเวลา' สามารถใช้เพื่อ:

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

ตัวอย่างเช่น แบตช์ไฟล์ต่อไปนี้หยุดชั่วคราวเป็นเวลา 10 วินาที:

@ปิดเสียงสะท้อน

echo สวัสดี การดำเนินการสคริปต์จะดำเนินต่อไปหลังจากหน่วงเวลา 10 วินาที

หมดเวลา /t 10

สะท้อน ขอบคุณ!

ดังที่แสดงในภาพหน้าจอต่อไปนี้ ตัวจับเวลากำลังทำงานและรอให้ผู้ใช้ขัดจังหวะคำสั่ง 'หมดเวลา' โดยการกดปุ่มใดก็ได้ หากผู้ใช้กดปุ่มใด ๆ กระบวนการจะหยุดและย้ายไปยังคำสั่งถัดไปในแบตช์ไฟล์:

ผู้ใช้ในภาพหน้าจอต่อไปนี้ขัดจังหวะคำสั่ง 'หมดเวลา' หลังจากผ่านไป 5 วินาที ส่งผลให้แสดงข้อความ 'ขอบคุณ!' ข้อความ:

ภาพหน้าจอต่อไปนี้แสดงให้เห็นว่าข้อความ “ขอบคุณ!” ข้อความจะใช้เวลา 10 วินาทีในการพิมพ์บนหน้าจอ หากผู้ใช้ไม่ขัดจังหวะคำสั่งการหมดเวลา:

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

@ปิดเสียงสะท้อน

rem ไฟล์แบตช์นี้หยุดชั่วคราวเป็นเวลา 10 วินาที

echo สวัสดี การดำเนินการสคริปต์จะดำเนินต่อไปหลังจากหน่วงเวลา 10 วินาที

หมดเวลา /t 10 /nobreak

rem หลังจากผ่านไป 10 วินาที คำสั่งนี้จะแสดงบนหน้าจอพร้อมท์

สะท้อน ขอบคุณ!

นี่คือผลลัพธ์ของโค้ดก่อนหน้า:

บรรทัดคำสั่งจะแจ้งให้ผู้ใช้พิมพ์ Y หรือ N หากผู้ใช้ใช้คำสั่ง “CTRL+C” หากผู้ใช้คลิก Y งานแบตช์นี้จะหยุดลง:

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

การใช้คำสั่งแบบมีเงื่อนไขสำหรับการควบคุมการไหล

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

ถ้า <เงื่อนไข> อย่างอื่น

ตัวอย่าง:

เปิด Notepad หรือโปรแกรมแก้ไขข้อความที่คุณเลือกและเขียนโค้ดต่อไปนี้ซึ่งเตรียมค่าเริ่มต้นของตัวแปร inputValue เป็น 1 ในบรรทัดที่สาม จากนั้นค่าของตัวแปร inputValue จะถูกตรวจสอบโดยใช้คำสั่ง 'if' บนรันไทม์เพื่อดูว่ามีค่าเท่ากับ 1, 2 หรือ 3 หรือไม่ หากเป็นเช่นนั้น ข้อความที่เหมาะสมจะถูกพิมพ์บนหน้าจอบรรทัดคำสั่ง หากไม่เป็นเช่นนั้น ข้อความสุดท้ายจะปรากฏขึ้น ในคำสั่งแบบมีเงื่อนไขที่เรียกว่า “if” ค่า inputValue ของตัวแปรจะถูกตรวจสอบเพื่อดูว่ามีค่าเท่ากับ 1, 2 หรือ 3 หรือไม่ หากเป็นเช่นนั้น จะมีการดำเนินการบล็อคโค้ดหนึ่งในสองบล็อค หากเงื่อนไขเป็นจริง คำสั่งแบบมีเงื่อนไขจะไม่ทำอะไรเลย

@ปิดเสียงสะท้อน

rem สคริปต์นี้จะทดสอบตัวแปร inputValue กับค่า 1, 2 และ 3

ตั้งค่า inputValue=1

ถ้า '%inputValue%'=='1' (

echo ค่าอินพุตเท่ากับ 1

) อย่างอื่นถ้า '%inputValue%'=='2' (

echo ค่าอินพุตเท่ากับ 2

) อย่างอื่นถ้า '%inputValue%'=='3' (

echo ค่าอินพุตเท่ากับ 3

) อื่น (

echo ตัวแปร inputValue ไม่เท่ากับ 1, 2 หรือ 3

)

เอาท์พุท:

บทสรุป

โฟลว์สคริปต์อาจถูกควบคุม และกระบวนการต่างๆ สามารถทำให้เป็นอัตโนมัติบนระบบปฏิบัติการ Windows ได้โดยใช้คำสั่ง ลูป และคำสั่งแบบมีเงื่อนไข เช่น “if” นักพัฒนาอาจหยุดการทำงานของสคริปต์หรือเพิ่มความล่าช้าด้วยคำสั่ง 'หยุดชั่วคราว' โดยใช้ 'หมดเวลา' หรือ 'ping' แม้ว่าจะไม่มีคำสั่ง 'switch' ในตัวในการเขียนสคริปต์แบบแบตช์ แต่เราสามารถจำลองด้วยนิพจน์ 'if' และ 'else if' ได้ การทดสอบถือเป็นสิ่งสำคัญเพื่อให้แน่ใจว่าสคริปต์เหล่านี้ทำงานตามที่ตั้งใจไว้ในบริบทที่เหมาะสม สคริปต์เหล่านี้มีประโยชน์สำหรับระบบอัตโนมัติ การจัดการระบบ และการจัดการไฟล์