Windows PCのUSB-HDDの電源が自動で落ちてしまう問題の対処方法の第2弾です。「USBセレクティブサスペンド」の無効化等でも効果がなかった方は必見です。
前回の以下記事では、WSL+Linuxスケジューラ(cron)を使った対処方法を紹介したのですが、普段WSLやLinuxに縁がない方には、とっつきづらい方法でした。
今回は、その点を解消するために、Windows標準のタスクスケジューラとVBScriptを使った対処方法を紹介します。
PC環境
- OS: Windows 11 Home
- CPU: AMD Ryzen 7 3700X
- マザーボード: PRIME B550M-K (ASUSTeK COMPUTER INC.)
- USB-HDD: WD Elements 25A3 (10TB)
対処方法
やることは、前回同様、以下です。
一定時間毎にUSB-HDDに自動アクセスする
これの実現方法として、今回は、面倒な環境構築が不要な以下方法を実施しました。
USB-HDDにテキストファイルを出力するVBScriptを、
Windows標準のタスクスケジューラで定時実行
手順は以下です。
- USB-HDDに自動アクセスするVBScriptを作成
- VBScriptを、タスクスケジューラに設定
1.USB-HDDに自動アクセスするVBScriptを作成
VBScriptの内容は、
ターゲットとなるUSB-HDDにアクセス
という処理であれば何でもよいです。スクリプトファイルの保存場所/名前も任意です。
以下例は、前回同様、現在時刻を、USB-HDDがあるFドライブにテキストファイル(hdd_accessed_win_vbs.txt)出力する処理です。
Const FILE_PATH = "F:\work\hdd_accessed_win_vbs.txt"
Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")
Dim ts
Set ts = fso.CreateTextFile(FILE_PATH, True)
ts.WriteLine Now()
ts.Close()
Set ts = Nothing
Set fso = Nothing
ご自分の環境に合うよう、先頭行のFILE_PATH設定値を編集すれば、あとは、そのまま使っていただくでもOKです。
2.VBScriptを、タスクスケジューラに設定
まずは、タスクスケジューラを起動します。
起動方法は以下です。
① Windowsスタートボタンをクリック
② 検索窓に「タスクスケジューラ」と入力(下図)
③ 「タスクスケジューラ」をクリック
タスクスケジューラを起動したら、右の「タスクの作成...」(下図赤枠)をクリックします。
各タブに設定する内容は下表です。
(※)これをやらないと、なぜか、一度失敗するとタスクが起動されなくなりました。
これで、VBScript(hdd_access_win.vbs)が定期的(上記例だと10分毎)に実行され、USB-HDDに定期的に自動アクセスするようになり、USB-HDDの電源が切れることがなくなりました。
おわりに
Windows上のスクリプトといえば、バッチファイルやPowerShellスクリプトが真っ先に思い浮かびますが、これらを使うと、どうしても一瞬、コマンドプロンプト/PowerShellウィンドウが出てきてしまいます。
一瞬なので、気にならない方はそれでいいのですが、動画配信向けに画面キャプチャ録画するような方には、一瞬黒い画面が入り込んでしまったり、フォーカスを奪われたりしてしまうので、不向きです。
ググると、コマンドプロンプト等を非表示にする方法も出てきますが、その方法が、VBScriptを使ってバッチファイル等を起動する方法だったりします。だったら、VBScriptだけで実現したほうがシンプルかと思い、今回、この方法としました。USB-HDDの悩みを抱える方に、お役立ちできれば幸いです。