PC起動時にWindows Terminalの背景画像をランダムで変えるスクリプトを書いてみた
- 2020.12.02
- プログラミング学習

こんにちは、Mako(@makokamiya)です。
CODE BASE OKINAWA プログラミングスクール Advent Calendar 2020 の2記事めとして投稿します!
経緯
学校PCのWindows Terminalに、(最近個人的にはまっている鬼滅の刃のキャラクターの)背景画像を設定して使っていますが、自動でランダムに画像を変えられたらいいなと思いました。
「スクリプト」ってなに?というレベルの私がいろいろ調べながらやったものなので、間違っているところや、もっといい方法があるよ―などコメントいただけると嬉しいです。
前提
- Windows PowerShellで背景画像を設定している。
- 背景に設定する画像の名前を決めておく。例)terminal_img.jpg
- 画像の保存先のパスを確認しておく。例)
C:/Users/*****/terminal_imgs/
(*****
)の部分はご自身の環境に合わせる
画像をランダムに変更するスクリプトを作成
スクリプトとは
スクリプトとは、台本、脚本、原稿、手書き、筆記体などの意味を持つ英単語。ITの分野では簡易なコンピュータプログラムをスクリプトと呼ぶことが多い。
http://e-words.jp/w/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88.html
さっそくスクリプトを書いてみる
まず任意のフォルダに任意の名前のスクリプトを作成する。拡張子はps1。
(ps1はpowershellのスクリプトファイルらしい。)
私の場合は、覚えやすいように画像を保存しているフォルダに「terminal_img.ps1」という名前で作成しました。
中身は以下のように作成する。
// フォルダの中にあるjpg画像を配列として格納。
$array = Get-ChildItem 'C:\Users\*****\terminal_imgs' -Name -Filter *.jpg
// 配列の長さ
$array_length = $array.Length
// 配列のインデックス番号をランダムで設定。(番号は0から配列の数の間)
$array_number = Get-Random -Minimum 0 -Maximum $array_length
// ランダムで決められた画像の名前を格納。
$img = $array[$array_number]
// ランダムで決められた画像をコピーして決めておいた名前に変更。
Copy-Item "C:/Users/*****/terminal_imgs/$img" -Destination "C:\Users\*****\terminal_imgs\terminal_img.jpg"
Get-ChildItem
ディレクトリの中のアイテムの名前を取得する。
-Name
で名前だけを取得する。
-Filter
でフィルターかけて検索。
Get-Random
乱数を取得する。
-Maximum
で最大値よりも小さい値を返す。(以下ではない。)
Copy-Item
アイテムをコピーする。
-Destination
で移動先を指定する。defaultはカレントディレクトリ。
スクリプトを実行してみる
実行ポリシーを有効にする
ps1ファイルはデフォルトで実行できないようになっているようです。
Windows PowerShellを管理者として実行し、下記コマンドを実行する。
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
確認メッセージが表示されるので、y
を入力する。
これでps1ファイルの実行ができるようになりました。
スクリプトの実行
下記のように実行する。
\Users\*****\terminal_imgs\terminal_img.ps1
Powershellを再起動してみる。画像が変わっているはず。
PC起動時にスクリプトを実行する
毎回スクリプトを実行するのは面倒なので、PC起動時にスクリプトを実行するように設定してみる。
- Windows PowerShell のショートカットを「C:\Users\*****\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup」に作成する。
(環境によって場所が違うかもしれない。) - 作成したショートカットを右クリックしてプロパティを開く。
- 「リンク先」を「%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe -Command “C:\Users\*****\terminal_imgs\terminal_img.ps1″」のように設定する。
これでPCを起動したときに、作成したWindows PowerShell のショートカットが”C:\Users\*****\terminal_imgs\terminal_img.ps1
“のコマンドとともに実行され、画像がランダムに入れ替わる!
おわり。
まとめ
やっぱりテンション上がりますね。
