前往
大廳
主題

Windows 10開啟行動熱點(hotspot)後無法睡眠(sleep)之解法

Jack | 2021-12-01 21:34:43 | 巴幣 1002 | 人氣 1077

Windows 10可開啟「行動熱點(hotspot)」以Wi-Fi分享網路給手機、平板或其他行動裝置,但於開啟狀態下,電腦無法睡眠(sleep),若想讓電腦定時睡眠,又想開啟行動熱點,如何是好?

此時可以撰寫一個批次檔(bat),首先呼叫PowerShell關閉行動熱點,再命令電腦睡眠;配合計時器程式,例如設定1小時後,自動執行批次檔,即可順利睡眠。

我寫好的批次檔可於此下載:關閉行動熱點並睡眠.bat

計時並自動執行程式的程式,可參閱我寫的上一篇文章:



以下是PowerShell與批次檔撰寫教學!

Stack Overflow上,有網友發問如何撰寫程式碼以關閉行動熱點:

第2個答案,即Elyasaf755的答案,撰寫了開關行動熱點的PowerShell程式碼。

其中,第2段程式碼是「開啟行動熱點」。
第1段程式碼是第2段經「編碼(encode)」所得,應複製並貼上txt文字檔,再變更副檔名以轉為批次檔(bat),執行此批次檔即開啟行動熱點。

第3段程式碼是:若偵測到行動熱點「開啟」則關閉之,若偵測到「關閉」則開啟之。
第4段程式碼是第3段經編碼而得。



下述改寫第3段程式碼,並示範如何編碼及轉換為批次檔。
  1. 第3段程式碼底部為:

    滑鼠按圖片可放大
    井號「#」後方文字為註解,PowerShell不執行
  2. 灰底色這一段,我不需要,刪除灰底色的,程式碼變成:
  3. 承步驟2,複製全部程式碼,並開啟PowerShell,再輸入:
    $Command = @'
    程式碼
    '@

    再按Enter,如下圖所示:
    首尾兩者「@'」、「'@」作用為何?
    據微軟官方之「引號規則」和我實驗,必須如此撰寫才可正確執行,否則之後的程式碼將出錯且無法執行!
  4. 複製以下兩行程式碼至PowerShell,並按Enter:
    $Bytes      = [Text.Encoding]::Unicode.GetBytes($Command)
    $Encoded = [Convert]::ToBase64String($Bytes)

  5. 輸入「$Encoded」按Enter,得到編碼後的程式碼,如下圖所示:

    須複製程式碼,勿關此PowerShell視窗
  6. 新增一個txt純文字文件
    首行寫「powershell.exe -encodedCommand 」和一個空格,然後不換行,複製並貼上步驟5之「編碼後的程式碼」。
    末行寫「powercfg -hibernate off | Rundll32.exe Powrprof.dll, SetSuspendState Sleep
    如下圖所示:
  7. 變更文字文件的副檔名為「bat」,例如:「關閉行動熱點並睡眠.bat」
  8. 參閱我寫的上一篇文章:分享好用的自動關機程式:KShutdown
    配合KShutdown,定時執行此批次檔,即可自動關閉行動熱點並休眠。

創作回應

瑋哥
那請問如果是若偵測到熱點關閉即睡眠的的話呢?
2022-08-05 01:06:30
Jack
我寫在以下PDF文件中了!請參閱:
https://www.mediafire.com/file/ewb4234lxo6czz3/答巴友[20211202-瑋哥]留言.pdf/file
2022-08-05 10:29:46
Jack
您好,我測試了,由於PDF軟體自行加入換行字元,導致「powershell.exe -encodedCommand JABjAG8A....」指令無法執行。請用cmd再度執行以下指令:
2022-10-17 09:30:38
Jack
https://www.mediafire.com/file/92ojdvtjgat1or9/%25E7%25AD%2594%25E5%25B7%25B4%25E5%258F%258B%25E7%2591%258B%25E5%2593%25A5%25E7%2595%2599%25E8%25A8%2580.txt/file
2022-10-17 09:31:12
追蹤 創作集

作者相關創作

更多創作