ในการเขียนสคริปต์เป็นชุดบน 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สวิตช์ “/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' ได้ การทดสอบถือเป็นสิ่งสำคัญเพื่อให้แน่ใจว่าสคริปต์เหล่านี้ทำงานตามที่ตั้งใจไว้ในบริบทที่เหมาะสม สคริปต์เหล่านี้มีประโยชน์สำหรับระบบอัตโนมัติ การจัดการระบบ และการจัดการไฟล์