Skip to content

Instantly share code, notes, and snippets.

@limemidolin
Last active August 29, 2015 14:19
Show Gist options
  • Save limemidolin/2db482901ee88fbaf9bb to your computer and use it in GitHub Desktop.
Save limemidolin/2db482901ee88fbaf9bb to your computer and use it in GitHub Desktop.
finishを実行するとベルを鳴らすPowerShellコマンドレット / Run "finish" to ring the bell by PowerShell cmdlet.
function Play-Sound(){
if(($args.Count -eq 1) -and (Test-Path -path $args[0]) -and ((ls $args[0]).Extension.ToLower() -eq ".wav")){
(New-Object Media.SoundPlayer((ls $args[0]).FullName)).Play()
}
}
function Play-Sound-Bell(){ Play-Sound ((ls $Profile).Directory.FullName + "\Resource\Bell.wav") }
sal finish Play-Sound-Bell
@limemidolin
Copy link
Author

説明

実行時間が非常に長いコマンドは、画面をじっと見て終了を待つより、耳でコマンドの終了を感じ取ったほうがよいでしょう。

Bell.wavは使う人が用意してください。 私は電子レンジの音にしています。

準備

  1. このスクリプトをMicrosoft.PowerShell_profile.ps1に書き込むなどして、実行時に読み込まれるようにしてください。
    • Microsoft.PowerShell_profile.ps1は、PowerShellが起動したときに実行されるスクリプトです。詳しくは検索してください。
  2. $Profile (既定ではC:\Users\{ユーザ名}\Documents\WindowsPowerShell)にResourceフォルダを作成してください。
    • $Profile はPowerShellで叩けば出ます。おそらく。
    • PowerShellで explorer $Profile を実行すればおそらくわかります。
  3. Resourceフォルダに、鳴らしたいwavファイルを Bell.wavとして用意します。
    • C:\Users\{ユーザ名}\Documents\WindowsPowerShell\Resouce\Bell.wav

使い方、例

finish と入力するだけで音が鳴ります。たのしい!
実用的な使い方は以下のような感じです。

foreach($i in ls){
  echo "too loooooong time..."
}

# 音が鳴ることで上記のコマンドの終了を知ることができます。便利!
finish

ほかの使い方

Play-Sound コマンドレットは1つの引数を受け取り、引数に指定されたwavファイルを再生できます。
コマンドが実行されると、非同期でwavファイルを再生します。

Play-Sound RingMyBell.wav
play-sound "Somebody Scream.wav"

残念なところ

Play-Sound は引数が2つ以上存在したり、指定されたファイルが存在しない場合、音もなく、何も表示されることなく終了します。また、再生の同期/非同期は指定できません。そのため、再生が終わったら何かする、などの遅延目的(?)には使えません。

@limemidolin
Copy link
Author

Description

Run "finish" command, ring the bell by PowerShell.

Setup

  1. Load this script.
  2. Make Resource folder in $Profile contains folder.
  3. Put on your Bell.wav to Resource folder.

How to use

Run finish . That's so fun!

# command has very long time...
foreach($i in 1..100000){ echo $i }

# notify complete to ring bell!
finish

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment