2025/12/27
SSPにはランダムなゴーストを起動してくれる便利な機能がありますが、全ゴーストの中からではなく特定のフォルダの中からランダムに起動したいと思ったことはないでしょうか。私はありました。
いろいろ調べてみたものの、SSP標準の機能だけでは実現できなさそうだったので、バッチファイルを書いて解決することにしました。この記事ではその方法を紹介します。
同じことをやりたい方の参考になれば幸いです。
SSPでは、設定項目
設定 → ゴースト(1) → ゴーストを1つランダムに選択して起動(前回終了時の状態は破棄)
をオンにすることで起動時にランダムなゴーストを起動することができます。普段起動しないゴーストに偶然会える便利な機能だと思います。
SSPはフォルダ機能によりゴーストを複数のフォルダに分割して配置することができます。
私はこれを使って特によく起動するゴーストたちをFavoriteフォルダに区分けしています。
あるとき、起動時にランダム起動するゴーストの候補をお気に入りフォルダに絞りたいと考えました。
ランダム切り替えの対象にしない をオンにする(失敗)フォルダ設定には「ランダム切り替えの対象にしない」というものがあったため、お気に入りフォルダを除く全てのフォルダでこれをオンにしました。
しかしこれで防げるのはさくらスクリプト \+ によるランダム起動などで、上記のランダム起動は適用対象外のようでした。
/g とバッチファイルを組み合わせる(成功)SSPの起動オプション では、/g オプションを指定することで起動時に指定したゴーストを起動できます。
つまり外部スクリプトで候補の中から1つゴーストを選択する処理を作ることができれば、上記機能と組み合わせることで「お気に入りフォルダ内のゴーストからランダムに起動」は実現できそうです。
→できました。
@echo offchcp 65001 >nulsetlocal enabledelayedexpansionrem === 設定 ===set "SSP_DIRECTORY=C:\Users\user1\Ukagaka\ssp"set "GHOSTS_DIRECTORY=C:\Users\user1\Ukagaka\Ukagaka-Ghost\Favorite"rem === ゴーストフォルダ直下のディレクトリを列挙してカウント ===set count=0for /d %%d in ("%GHOSTS_DIRECTORY%\*") do ( set /a count+=1 set "dir_!count!=%%~nxd")rem === ディレクトリが見つからない場合 ===if %count%==0 ( echo エラー: %GHOSTS_DIRECTORY% にフォルダが見つかりませんでした。 pause exit /b 1)rem === ランダムに1つ選択 ===set /a "rand=(%RANDOM% %% count) + 1"set "selected=!dir_%rand%!"rem === ssp.exe を実行 ===start "" "%SSP_DIRECTORY%\ssp.exe" /g "%GHOSTS_DIRECTORY%\%selected%"endlocal
メモ帳などで新規ファイルを作成し、上記コードをコピペします。
コードの冒頭にある設定部分は、各自の環境に合わせて書き換えてください。
set "SSP_DIRECTORY=C:\Users\user1\Ukagaka\ssp"set "GHOSTS_DIRECTORY=C:\Users\user1\Ukagaka\Ukagaka-Ghost\Favorite"
SSP_DIRECTORY:SSPのインストールフォルダ(ssp.exeがある場所)GHOSTS_DIRECTORY:ランダム起動の対象にしたいゴーストが入っているフォルダ設定ができたら、適当な場所に random_boot.bat のような拡張子 .bat のファイルとして保存します。
保存後はこのバッチファイルをダブルクリックするだけで起動できます。
このバッチファイル(またはそのショートカット)をスタートアップフォルダに配置すると、Windows起動時に自動でランダムなゴーストが立ち上がるようになります。
スタートアップフォルダは、エクスプローラーのアドレスバーに shell:startup と入力すると開けます。
SSP標準のランダム起動機能は全ゴーストが対象になってしまいますが、起動オプション /g と外部スクリプトを組み合わせることで、特定フォルダ内のゴーストに限定したランダム起動を実現できました。