コラム

バッチファイルの様々な実行方法

目次

その他の関連しそうな記事

 

ダブルクリックで実行

バッチファイルの最も簡単な実行方法がファイルを「ダブルクリック」することです。通常のファイルは、すなわちバッチファイル以外のファイルでは、ダブルクリックは「そのファイルを開く」ことを意味しますが、バッチファイルの場合は「ファイルの実行」を意味します。

簡単なプログラムで確認してみましょう。以下のように記述した「execute.bat」ファイルを作成します。

5行目の「pause」は一時停止コマンドです。詳しくは、「pause -コマンド別解説-」を参照して下さい。コマンドプロンプト画面はバッチファイルのプログラム終了後すぐに閉じてしまうため、ここでは確認しやすいようにファイル内の処理を一時停止するために記述しています。

このバッチファイルをダブルクリックすると、以下のように表示され、実行できたことが確認できます。

バッチファイルの様々な実行方法 ダブルクリックによる実行方法

先に述べたように、これが最も簡単なバッチファイルの実行方法ですが、デメリットもあります。

それは「引数」が扱えないということです。引数とは、バッチプログラム内の「%1」などに任意の文字列を引き渡し、ユーザーの情報をバッチファイルに反映させるためのものです。詳しくは「%1,%2…%X(引数とプレースフォルダー) -コマンド別解説-」をご覧下さい。

「引数」を指定するためには、次節以降で紹介する「コマンドプロンプトで実行」、もしくは「ファイルをバッチファイルにドラッグ&ドロップで引数を渡して実行」を行う必要があります。

 

コマンドプロンプトで実行

最も一般的な実行方法が、コマンドプロンプト上でバッチファイルを実行する方法でしょう。これは、コマンドプロンプトを開いてバッチファイル名を入力し、「Enter」を押すことで実行します。前節で作成したバッチファイル「execute.bat」をコマンドプロンプト上から実行したときの画面を以下に示しています。

バッチファイルの様々な実行方法 コマンドプロンプトによる実行方法

コマンドプロンプト上での実行は、コマンドプロンプトを開く動作とバッチファイル名を入力する動作が入るため、ダブルクリックによる実行に比べると手間ですが、プログラムのエラーが生じた場合にコマンドプロンプト内に表示されたエラー情報などを確認できるため、新しく作成したプログラムは一度この方法で実行して動作をチェックするのが一般的です。

また、ダブルクリック実行では扱えなかった「引数」についても扱うことができます。バッチファイルに「file.txt」というファイル名を引数として渡し、ファイルのコピー「copy_file.txt」を作成するプログラムで確認しましょう。「copy.bat」を作って、その内容は以下のように記述します。

コピーしたいファイル名を引数として与え実行します。

すると「copy_file.txt」という「file.txt」ファイルがコピーされたファイルができます。

まとめます。コマンドプロンプトを開いて実行するときは、

  • 新規に作ったプログラムの動作確認
  • 「引数」を使用したいとき

に利用すると便利な実行方法となっています。

 

ファイルをバッチファイルにドラッグ&ドロップして実行

コマンドプロンプトを開かずとも「引数」を使用できるバッチファイルの実行方法が、「ファイルをバッチファイルにドラッグ&ドロップして実行する」方法です。これは、引数としてプログラムに渡したいファイルをバッチファイル上にドラッグ&ドロップします。すると、勝手にバッチファイルが実行され、プログラム内の「%1」にはそのファイルの「絶対パス」が引き渡されます。

次のような簡単なバッチファイル「DD_exe.bat」で引き渡された「%1」の中身を確認します。

これを実行すると、以下のような結果が得られます。

バッチファイルの様々な実行方法 引き渡された%1の中身を確認

「%1」には、2行目の「C:\…\file.txt」のように「file.txt」ファイルの絶対パスが入っていることが分かります。

 

ドラッグ&ドロップで引数を渡して実行するときの注意点

では、この実行方法は前節で作成した「copy.bat」に利用可能でしょうか?

試しに、「file.txt」ファイルをバッチファイル「copy.bat」にドラッグ&ドロップしてみると、

バッチファイルの様々な実行方法 ドラッグ&ドロップ実行のエラー例

のようなエラーが発生しました。

これは「%1」には絶対パス(C:\…\file.txt)が入っていることが原因です。「copy %1 copy_%1」を実行するとき、「%1」には「C:\…\file.txt」が入っているため、

を実行しようとしているのです。コピー元は問題なさそうですが、コピー先のドライブ名が「copy_C:」となってしまい、これでエラーが生じているのです。

これを回避する方法は「%1」からファイル名のみを抜き出して使用することです。

3行目の「copy」コマンドに指定する「%1」を「%~xn1」とファイル名のみを抜き出して使用しています。文字列の抜き出しについては、「パス名の文字列を自在に切り取る -やりたいこと検索-」に詳しく記載しているのでそちらを参照下さい。

Windowsバッチファイル初心者へ向けた入門書を作成しました


Windowsバッチファイル初心者の方へ向けた入門書(PDF)を作成しました。


・初めてWindowsバッチファイルを勉強してみようと思っている方

・使ったことはあるが一から基礎を学び直したい方


へ向けて丁寧な解説を行っています。


「全くプログラムを知らない方でも、この入門書を読んだ後には、Windowsバッチファイルの中級者レベルになれるように」をコンセプトに執筆したものです。


この本を読めば、バッチファイルを使ったファイルやフォルダの操作に関しては一通りのことができるようになります。そうなればもう十分中級者と呼べるレベルですので、あとは自分のやりたいことを実現しようとする中で徐々に知識を蓄えていくだけですぐに上級者へなれるでしょう。


詳しくみる

関連ページ

コメントを残す