ฉันจะเริ่มโปรแกรมหลังจาก 10 นาทีได้อย่างไรหากไม่มีการกดปุ่ม


3

start "" "C:\Program Files\program.exe"

  • ฉันต้องการให้โปรแกรมเริ่มต้นหลังจากผ่านไปสิบนาทีเท่านั้นหากไม่มีการกดปุ่มใด ๆ

  • ฉันต้องการให้โปรแกรมไม่เริ่มทำงานหากกดปุ่มใด ๆ ภายในสิบนาที

ฉันควรใช้คำสั่งอะไรในไฟล์. bat

คำตอบ:


5

ฉันต้องการให้โปรแกรมเริ่มต้นหลังจากผ่านไปสิบนาทีเท่านั้นหากไม่มีการกดปุ่มใด ๆ

ใช้แบตช์ไฟล์ต่อไปนี้:

@echo off

    call :controlTimeout 600
    if errorlevel 1 (
        echo A key was pressed
    ) else (
        echo Time Up
        start "" "C:\Program Files\program.exe"
    )

    exit /b 

:controlTimeout 
    setlocal
    start "" /belownormal /b cmd /q /d /c "timeout.exe %~1 /nobreak > nul"
    timeout.exe %~1 & tasklist | find "timeout" >nul 
    if errorlevel 1 ( set "exitCode=0" ) else ( 
        set "exitCode=1"
        taskkill /f /im timeout.exe 2>nul >nul
    )
    endlocal & exit /b %exitCode%

เครดิต: ไฟล์แบตช์ข้างต้นอ้างอิงจากการเขียนสคริปต์ชุดคำตอบของ StackOverflow windows: ตรวจจับการตอบสนองของผู้ใช้ต่อคำสั่ง "timeout"โดยMC ND


อ่านเพิ่มเติม

  • ดัชนี AZ ของบรรทัดคำสั่ง Windows CMD - การอ้างอิงที่ยอดเยี่ยมสำหรับทุกสิ่งที่เกี่ยวข้องกับบรรทัด Windows cmd
  • Errorlevel - แอพพลิเคชั่นและยูทิลิตี้เกือบทั้งหมดจะตั้งรหัสออกเมื่อเสร็จสมบูรณ์ / สิ้นสุด
  • tasklist - TaskList แสดงแอปพลิเคชันและบริการที่กำลังทำงานอยู่ทั้งหมดด้วย Process ID (PID) ซึ่งสามารถทำงานได้ทั้งบนเครื่องโลคัลหรือคอมพิวเตอร์ระยะไกล
  • หมดเวลา - ดำเนินการล่าช้าสองสามวินาทีหรือนาทีเพื่อใช้ภายในไฟล์แบตช์

2

หากคุณไม่ต้องการการนับถอยหลังแบบเห็นภาพแสดงว่ามีวิธีแก้ปัญหาอย่างง่ายโดยใช้ TIMEOUT ซึ่งใช้<backspace>อักขระ (0x08) เพื่อจัดตำแหน่งหมายเลขนับถอยหลังที่แสดงในแต่ละวินาที

ดูเหมือนว่าตัวเลขจะอยู่ตรงกลางของสตริง แต่ผลลัพธ์ที่ได้จริงมี 0 สุดท้ายเป็นตัวอักษรตัวสุดท้ายตัวสุดท้ายด้วย backspace หรือช่องว่างข้างหน้า หากผู้ใช้กดปุ่ม TIMEOUT จะถูกยกเลิกและ 0 สุดท้ายจะไม่ถูกส่งออก

คุณสามารถไพพ์เอาต์พุตไปที่ FINDSTR เพื่อทดสอบว่า 0 คือเอาต์พุตหมายเลขสุดท้ายหรือไม่

timeout 600 | findstr "[^0-9]0$" >nul && start "" "C:\Program Files\program.exe"

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

timeout 600 | tee countdown.txt
findstr "[^0-9]0$" countdown.txt >nul && start "" "C:\Program Files\program.exe"
del countdown.txt
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.