Windowsのエクスプローラと言えば、ゆとりエンジニアの強い味方とも言えるファイラです。
Windowsでコマンドラインを使っていて、時々カレントディレクトリでエクスプローラを開きたくなることがあります。
要はexplorer .
を打てばいいのですが、タイプしにくいのです(私だけ?)。
# 今書いている最中もタイポしました
素のコマンドプロンプトだと補完機能もないのでうんざりします。
そこで登場するのがスクリプト。Windowsだとバッチファイル(拡張子.bat
や.cmd
)ですね。
バッチスクリプト(WSH)自体は昔からありますしこなれているのですが、いかんせん構文が古く覚える気力が湧きません。たまに社内ツールで目にしますが、VBスクリプト職人が書いたスクリプトは自分でカスタマイズできる気がしません。
そこでPowerShellを呼ぶようにすると、Powershellや.NETの知識を使えるので、できることが広がる気がします。また、環境変数Path
にパスを通しておき、いつでも使えるようにすると便利です。
ここでは大したことをしていませんが、他にも自作のコマンドを作るときは同じやり方が使えます。自分で育てるコマンドツールには愛着もわくというものです。
Explorerで開く
ここで作成したバッチは次のようなものです。
exp.cmd
という名前で保存しておきます。
1 2 | @echo off powershell if('%1' -ne ''){ explorer %1 }else{ explorer . } |
引数(%1
で参照)が指定されていなければ現在のパス(カレントディレクトリ)でエクスプローラを開きます。引数が指定されている場合はexplorer.exe
コマンドと同じように動作します。
環境変数の追加
環境変数Path
を設定しておくと、バッチファイル名(この例ではexp
)でスクリプトを実行できます。
念のためバッチファイルが他のコマンド名と重複しないよう注意して下さい。
set
コマンドで一時的に設定してもいいのですが、ここでは永続的に設定する例を記載しておきます。
setx
コマンドを使って永続化する場合は下記のようにします。
1 | > setx PATH "%PATH;(例 C:/path/to/dir)" |
GUIでやりたい場合は、「コントロールパネル」>「システム」>「システムの詳細設定」と辿るか、以下を「ファイル名を指定して実行」ダイアログ(Windowsキー+R)またはコマンドプロンプトに入力して起動します。
1 | SystemPropertiesAdvanced |
ユーザー環境変数のほうのPath
に追加するのが無難でしょう。
環境変数Path
に上記バッチファイルが格納されているディレクトリを追加しておきます。環境変数を変更した後は、変更を反映させるためにコマンドプロンプトを再度起動するなどする必要があります。
where
コマンドを使うと、パスが通っているか確認できます。
1 2 3 4 | > where exp C:\path\to\dir\exp.cmd > where explorer C:\Windows\explorer.exe |
パスが通っていれば今回作成したexp
コマンドが使えるはず。タイポしやすい実行ファイル名よりも短い名前で起動できますね。
1 2 3 4 | (Current Dir)> exp # 現在の場所でエクスプローラが起動する (Current Dir)> exp %windir% # Windowsディレクトリでエクスプローラが起動する |
ExplorerかAtomで開く
もうちょっとPowershellっぽい例に変更してみましょう。
下記の例ではexp.cmd
バッチファイルのうち、引数を渡さない場合の挙動を変更しています。現在のディレクトリ直下に.git
サブディレクトリがあるかを調べ、存在する場合(=Gitローカルレポジトリと想定)はAtomで開きます。
1 2 | @echo off powershell "if('%1' -ne ''){ explorer %1 }else{ if ((Get-ChildItem -Force | where {$_.Name -eq '.git'}) -eq $null){ explorer . } else{ atom . } }" |
このように単純な例ならば、コマンドレット文をPowershellに渡せばわざわざPowerShellスクリプトを書くことなく実行できますね。