WINDOWS11 設計一個倒數計時(輸入分鐘)定時關機 使用BAT(ANSI編碼)

WINDOWS11 設計一個倒數計時(輸入分鐘)定時關機 使用BAT(ANSI編碼)

WINDOWS11 設計一個倒數計時(輸入分鐘)定時關機 使用BAT(ANSI編碼)


資料來源: chargpt+gemini+自己


code

@echo off
chcp  950

rem 檢查是否有倒數檔案存在
if exist countdown_status.txt (
    echo 倒數計時正在進行中...
    type countdown_status.txt
    exit /b
)

:input_minutes
set /p minutes="請輸入倒數分鐘數:"

rem 檢查輸入是否為有效的數字
rem 這是一個簡單的檢查,可以防止非數字輸入導致錯誤
for /f "delims=0123456789" %%i in ("%minutes%") do (
    echo 輸入無效,請輸入數字!
    goto input_minutes
)
if "%minutes%"=="" (
    echo 輸入不能為空,請輸入數字!
    goto input_minutes
)

set /a countdown=%minutes%*60

rem 顯示確認訊息
echo 您輸入的時間為 %minutes% 分鐘 (%countdown% 秒)。
set /p confirm="如果確認無誤,請輸入 Y 開始倒數,或輸入 N 重新輸入:"

rem 清除用戶輸入中的空格和換行符
rem 這幾行是為了確保變數內容乾淨,避免誤判
set confirm=%confirm: =%
set confirm=%confirm:~0,1%

rem 根據使用者的輸入來判斷
rem 這裡使用了更安全的判斷結構,避免將變數內容誤認為指令
if /i "%confirm%"=="Y" (
    goto countdown_start
) else if /i "%confirm%"=="N" (
    goto input_minutes
) else (
    echo 輸入錯誤,請重新執行腳本。
    goto end
)

:countdown_start
echo 倒數計時開始,將於 %countdown% 秒後強制關機。

rem 創建倒數狀態檔案
rem 此檔案用於標記倒數正在進行中,避免重複執行
echo 倒數開始,將於 %countdown% 秒後關機。 > countdown_status.txt

rem 倒數計時
for /l %%i in (%countdown%, -1, 1) do (
    cls
    echo 倒數計時:%%i 秒
    echo 倒數計時:%%i 秒 > countdown_status.txt
    timeout /nobreak /t 1 >nul
)

rem 強制關機
shutdown /s /f /t 0

rem 清除倒數狀態檔案
del countdown_status.txt

:end


ps.Windows 中Command line切換字碼方法:chcp

chcp  950 中文
chcp  938/5033 繁體中文
chcp  936/5031 簡體中文
chcp  437 美國英
chcp  65001  UTF8

2 thoughts on “WINDOWS11 設計一個倒數計時(輸入分鐘)定時關機 使用BAT(ANSI編碼)

  1. 這條指令 shutdown /s /f /t 0 用來強制關機,具體作用如下:

    /s:啟動關機操作。
    /f:強制關閉所有應用程式,並且不顯示警告。
    /t 0:設定關機倒計時為 0 秒,立即執行。
    簡單來說,這條指令會在 0 秒內強制關閉電腦,並終止所有應用程式。

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *