バッチファイルまたはコマンドプロンプトから、「規定のアプリケーション」でファイルを開く方法についてです。単純にエクスプローラーでファイルをダブルクリックした時の動きを再現したいのですが、定期的に忘れて調べている気がするのでメモしておこうと思います。
やることとしては単純で、これだけです。
C:\>"test.xlsx"
ファイル名打ち込むだけです。Excel がインストールされていて、 .xlsx を Excel で開くよう既定のプログラム(10 だと既定のアプリ)が設定されていれば Excel で開かれます。もちろん Excel ファイル以外でも大丈夫です。
ただ問題として、この方法だと Excel のウィンドウを閉じるまで、バッチがずっと裏で待機してしまいます。コマンドプロンプトで直打ちする場合は気にならないのですが、バッチファイルだと Excel を閉じるまでコマンドプロンプトが開いたままになるので気になる場合があります。
そういった場合は start コマンドを使用します。新しくウィンドウを開いてプログラムを実行するコマンドです。
@echo off
start "" "C:\test.xlsx"
exit /B 0
start の第1引数はウィンドウのタイトルです。第2引数を .bat や .cmd ファイル、コマンドにすると、新しく立ち上がったコマンドプロンプトのウィンドウ名がそれになります。今回は使用されませんが空文字を指定します。第2引数は実行するコマンドまたはプログラムです。
ちなみに Excel なので、ファイルを既に開いている場合はエラーになります。この時の %errorlevel%
は 32 です。
曖昧な記憶からこれを実装しようとすると、ファイルを開くのはコマンド + ファイル名なんだろうなと思いこんで試行錯誤し、コマンドいらない事実に気付くまでに時間をかけ、ウィンドウ新しく開くときは start コマンドだったよなと思って start "ファイル名"
と打ってどつぼにはまる。。。単純なのに個人的にはかなり躓きやすいので、そろそろ確実な記憶としておきたいところです。