การใช้ GOTO
ลองชุดต่อไปนี้:
@echo off
set loopCount=50
:loop
start "C:\Program Files\Mozilla Firefox\firefox.exe" "http://testmywebsiteloadspeed.com"
set /a loopCount=%loopCount%-1
if %loopCount%==0 GOTO:EOF
timeout /t 60
taskkill /im firefox.exe
timeout /t 5
GOTO :loop
:loop
กำหนดGOTO
จุด
timeout /t 60
รอ 60 วินาที
taskkill /im firefox.exe
จะฆ่ากระบวนการ Firefox
GOTO :loop
จะเปลี่ยนเส้นทางกลับไปที่จุดเริ่มต้นของสคริปต์
หมายเหตุ:นี่จะฆ่ากระบวนการ Firefox ที่กำลังทำงานอยู่ทั้งหมด ฉันคิดว่า Firefox โดยทั่วไปจะอนุญาตให้ทำได้ทีละครั้งเท่านั้น
ใช้ไฟไนต์ลูป GOTO
ในการทำเช่นนี้สำหรับการทำซ้ำตามจำนวนที่ระบุคุณสามารถใช้set /a
ในการทำคณิตศาสตร์บางอย่างในตัวแปร loopCount
@echo off
set loopCount=50
:loop
start "C:\Program Files\Mozilla Firefox\firefox.exe" "http://testmywebsiteloadspeed.com"
set /a loopCount=%loopCount%-1
if %loopCount%==0 GOTO:EOF
timeout /t 60
taskkill /im firefox.exe
timeout /t 5
GOTO :loop
set /a loopCount=%loopCount%-1
สายจะลดค่าของ loopCount โดยหนึ่งในแต่ละครั้งที่วงวิ่ง if %loopCount%==0 GOTO:EOF
สายจะออกจากสคริปต์เมื่อมันถึง 0
GOTO:EOF
หมายถึง "ไปที่จุดสิ้นสุดของไฟล์" ซึ่งจะข้ามรหัสอื่น ๆ ในไฟล์
การใช้ FOR /l
ทางเลือกอื่นคือใช้FOR
ลูปกับ/l
สวิตช์ แต่ฉันมีปัญหาในการใช้ลูปซ้อนกันดังนั้นฉันมักจะติดกับGOTO
ตัวเลือกของไฟล์แบทช์ธรรมดาเช่นนี้ ถึงกระนั้นฉันหวังว่าสิ่งนี้จะช่วยให้ใครบางคนในอนาคต
@echo off
for /l %%x in (1, 1, 50) do (
start "C:\Program Files\Mozilla Firefox\firefox.exe" "http://testmywebsiteloadspeed.com"
set /a loopCount=%loopCount%-1
if %loopCount%==0 GOTO:EOF
timeout /t 60
taskkill /im firefox.exe
timeout /t 5
)
หากต้องการแยกFOR /l
คำสั่ง:
- อาร์กิวเมนต์แรกคือตำแหน่งที่คุณเริ่ม
- อาร์กิวเมนต์ที่สองคือขั้นตอนใหญ่เพียงใด (สิ่งนี้ไม่เกี่ยวข้องกับตัวอย่างเฉพาะของคุณเนื่องจากคุณไม่ได้ใช้ค่าเลย)
- อาร์กิวเมนต์ที่สามคือเมื่อหยุด