【コマンド入力】CMDとバッチファイルでショートカット 入門編

この記事の概要を簡単まとめ!

  • Windowsの標準アプリケーション「コマンド プロンプト」
  • MS-DOSに類似した機能を持つ
  • コマンドを記述したソースファイル「バッチファイル<.bat>」で入力を省略できる
  • 環境変数を設定することで任意のバッチファイルの呼び出しを可能にする
  • 簡単なバッチファイルを作って実際に試してみる
  • 操作を簡略化して楽をしよう

ここ最近、怒りに任せて書いたばかりに、トレンド記事ばかり書いている。これではあまり他のブログとの差異を出せないので、久しぶりにPC関係の話を書くことにする。

今回は、Windows標準アプリケーションの「コマンド プロンプト」(cmd.exe)の話である。以下cmdと省略するが、多くの人はcmdに対し、あまりいい印象を持たない。それは単純にGUIではなくCUIであるから、ということが大きいだろう。WindowsはGUIをベースとした、コマンドを覚えていなくても操作できるOSである。そのため、CUIに触れる機会は極端に少なくなり、コマンドが使えないのが普通になってしまったからである。

しかし、妙に親切なMicrosoftと、それに詳しい人がコマンドの解説、環境変数の設定、バッチファイルの作り方などをネット上にまとめている。ここではそれらの情報と、私自身が設定した環境変数の設定方法、バッチファイルの作り方をまとめたものを、初めて触れる人向けに書いていく。

Windows標準アプリケーション「コマンド プロンプト」

コマンド プロンプト(cmd.exe)とは何か

cmd.exeOS/2NT系WindowsWindows CEに搭載されているコマンドラインインタプリタである。英語版のショートカットには「Command Prompt」、日本語版のショートカットには「コマンド プロンプト」という名称が付けられている[1]MS-DOSからWindows 9xに渡って用いられたCOMMAND.COM(およびDOSプロンプト)と類似の機能を持つ。

Win32コンソールAPIを利用して実装されている。cmd.exeはWindowsコマンド[2]をプログラムコードとして対話的に入力・評価・実行できるREPL環境であり、またコマンドを記述したプログラムソースファイルはバッチファイルと呼ばれる。

cmd.exe – Wikipedia

Wikipediaでは、上記の通りである。Windowsの標準アプリケーションなのだから、Microsoftに概説でも載っていると思ったが、何故か載っていなかったため、引用することにした。[cmd.exe microsoft]で検索しても、microsoftが公式で書いている文書なども見当たらなかった。

一般に「コマンド プロンプト」(以下cmd)という名称は、cmd.exeの日本語版ショートカットの名称であり、いつも見ている黒い画面自体はcmd.exeということになる。これは、タスクマネージャーのプロセスから確認できる。

タスクマネージャー画面
タスクマネージャーの画面。コマンド プロンプトは画像のように”cmd.exe”となっている。

このcmdは、MS-DOSからWindows9xに渡って使用されてきたCOMMAND.COM1)MS-DOSで使用されていたCUIのシェル。現在のcmdと違い、シングルタスクである。参照:COMMAND.COM – Wikipedia及びDOSプロンプト2)NT系以前のWindowsにおいて、MS-DOS互換環境(DOS窓)を起動するアプリケーションのこと。参照:DOSプロンプト – Wikipediaと類似の機能を有する。類似であるが、それらよりも機能が向上しており、上位互換といえる。



Windowsの普及によりGUIが一般化した今、CUIは不要と思われるかも知れないが実際はそうではない。PCの基幹設定を変更や調整、PCに発生したエラー解析を行う場合にはCUIでないと不可能であることが多い。特に業務用PCのシステム設定を行う人などにとっては、CUIは必須である。そのためにWindwosの標準アプリケーションとして存在しているのである。

一般ユーザは使用しない?

そんなcmdだが、一般ユーザがこれを使用する機会は非常に少ない。それは、普通に使うのであればPCの基幹設定の変更や調整をする必要はなく、エラーも重大なものが起きないので、使う必要がないのである。

また、GUIでもある程度のエラーは簡単に解決できるようになっているため、cmdがなくても大丈夫にはなっているのである。もし自力で解決できなければ、インターネットで検索して探し、それを実行すればいい時代になっているので、昔よりは圧倒的に楽である。なお、その時に出るヘルプが元も子もないほど役に立たないことは多々ある。

そのような状況が一般的である以上、cmdに触れる機会もなく、下手すれば1度も触れることなくPCを買い換えるということはあるだろう。逆に言えば、それほどまでにOSは進化したということの証明である。とはいえ、まだバグは多く、常に改良が続けられている状態である。

cmdのコマンドを記述したソースファイル「バッチファイル<.bat>」

cmdはコマンドを打ち込み、そのコマンド(=命令)を解釈し、その結果を文字で出力するコマンドラインインタプリタである。処理方法は基本的に1つのコマンドで1つの処理であり、1個1個コマンドを打ち込んでいくスタイルである。

しかし、いくらコマンドを覚えていても毎回入力するのは面倒であり、それがルーチンであれば尚更である。その作業を簡略化するために、コマンドを記述したソースファイルをcmdに読み込ませ、実行させる機能がある。



このファイルはバッチファイルという名称であり、拡張子<.bat>のWindows バッチ ファイルという種類となっている。拡張子<.bat>となっているが、中身は単純なテキストファイルであり、Windows付属のテキストエディタで編集可能である。

バッチファイルは、起動したいバッチファイルをダブルクリックして実行するほか、cmdからフルパスまたは相対パスで指定してするか、バッチファイルが存在するディレクトリにcd3)cmdのコマンド。Change Directoryの意であり、”cd [存在するディレクトリの絶対パスまたは相対パス名]”でカレントディレクトリの変更が可能である。cmdにおける基本コマンドの1つである。した上でそのファイル名を指定すると実行できる。ただし、前者では全てのコマンドが実行されるとcmdの画面が自動で閉じてしまい、後者ではわざわざ入力するのが面倒である。

どちらの場合も、後述する方法によって自動で閉じるのを停止したり、入力を簡略化できる。それらについて次の項目で解説する。

cmdを使いこなすための設定とバッチファイル

さて、ここからは初心者向けに、cmdを使いこなすための解説を行う。と言っても、今回は設定と簡単なバッチファイルの作成、及びその解説を中心とする。

初期設定:環境変数の設定変更

バッチファイルをパス指定なし、及びcdなしで起動できるようにするため、環境変数の設定変更を行う。なお私がいつも作業するOSはWindows7のため、Windows10とは手順が異なることに留意していただきたい。

  1. 設定する前に、作成したバッチファイルをまとめておくディレクトリを作成する。Windowsとしてはフォルダだが、cmdのコマンドであるcdの名称からディレクトリとする。
  2. コントロールパネル>システムとセキュリティ>システムから、左側のシステムの詳細設定を開く。
  3. システムの詳細設定(システムのプロパティ)から、枠外の環境変数(N)を開く。
  4. システム環境変数(S)の変数名Pathを編集で開き、その最後尾に先程のディレクトリのフルパスを追加する。例:C:\Users\[USERNAME]\bat_files; フルパスの最後に必ずセミコロンをつけること。
環境変数設定変更(窓7)
環境変数の設定変更を行う手順。Windows7のため、変数が非常に見辛い。システム環境変数のPathにディレクトリのフルパスを追加する。

画像には載せなかったが、任意の場所に作成したバッチファイルを格納しておくディレクトリを作成している。これは、作成したバッチファイルを一箇所にまとめておき、その場所を環境変数で指定することで、呼び出しを簡単にする目的がある。

Windows10の場合、変数の内容が1行ごとに分けられており、追加や編集も簡単なため、迷うことはないと思われる。



入門編:バッチファイルを作ってみよう

さて、ここまでくれば準備完了である。早速バッチファイルを作ってみよう。使用するのはWindows付属のテキストエディタのみである。もし保有しているのであれば、Sublime Text 3のようなコーディング向けエディタを使用してもいい。

まずは簡単に、任意の文字列を表示させるバッチファイル(ファイル名:test001_echo.bat)を、Pathに追加したディレクトリ内に練習として作る。下記にそのソースコードを示す。

たった2行のバッチファイルだが、これをcmdで実行すると次のような結果になる。

cmd画面
test001_echo.batを実行した様子。cmdのコマンドechoはバッチファイルでも同じ動作をすることがわかる。

とはいえ、画像だけ見せられても何のことか分からないので、記述した内容を解説する。

  • @echo off: 実行時に記述されているコマンドを表示しない設定に変更する。殆どのバッチファイルの最初の行に書かれる定型文である。なお、@echo offは実行中のバッチファイル中のみ有効である。cmdの設定に影響しない。
  • echo: cmdのコマンド。echo [任意の文字列] で使用する。原則全ての文字列が使用できるが、特殊文字である{|, <, >, &, ^}は^を、%は%を、それぞれ文字として表示する場合に前につける必要がある。

なお、cmdのコマンドについては、[cmd <コマンド名>]で検索すると、そのコマンドに関する情報が出てくるため、比較的リファレンスを探しやすい。が、相変わらずMicrosoftの公式ページはヒットしないようである。



初級編:任意のアプリケーションを起動するバッチファイル

バッチファイルを1回作成したことで、少しは抵抗がなくなっていることだとだろう。ここでは初めてのショートカットとして、任意のアプリケーションを起動するバッチファイルを作成することにする。

ここでは新たにcmdのコマンドとして、start4)新たなcmd画面を開くコマンド。単体ではあまり使われない。アプリケーションを開く際によく利用されるが、GUI環境が標準の今、cmdから手入力で起動することは少ない。バッチファイルでアプリケーションを起動する際に利用することが多い。を使用する。アプリケーションのフルパスを指定すれば起動可能だが、分かりやすいようにstartを使用する。先程と同様にソースコードを下記に示す。今回は例としてGoogle Chromeを起動する。

このソースコードを記載したバッチファイルを作成し、同様の手順で起動する。すると、問題がなければChromeが起動する。なお、Chromeを導入していない人は、IEでもFirefoxでもいい。

通常、インストール先を変更していなければProgram Files (x86)以下にGoogle Chromeがインストールされる。さて、ここで2つの問題が発生する。

startコマンドのオプションによる「ややこしい問題」

startコマンドは、スペースを区切りとしている。そのため、そのまま記述するとC:\Programというアプリケーションを起動しようとしたとみなされて、エラーが出て失敗する。したがって、フルパスをダブルクォーテーションで囲う必要がある。

そしてstartコマンドは、ダブルクォーテーションをつけると、そのタイトルで新たなcmd画面を開くようになる。そのため、ただダブルクォーテーションをつけただけでは、起動することができないのである。

エラー画面とcmdが新しく開く
上がスペース区切りによる「存在しないエラー」の発生。下がcmdをその名称で新しく開いている画像である。下のcmdタイトルが””内の文字列になっていることが確認できる。

上の画像は、先に説明した通りに行った場合のものである。特にデフォルトでインストールした場合、Program Filesのどちらかにインストールされる。そのディレクトリ名のため、空白や特殊文字も文字列として認識するようダブルクォーテーションでフルパスを囲う必要がある。

しかしstartのオプションでは、直後のダブルクォーテーションは新たに開くcmdのタイトルを定義するオプションである。つまり、その中の文字列をタイトルとして認識してしまうのである。したがって、これを知らない場合、新たなcmd画面を開いてしまうミスが発生するのである。

それを避けるため、示したソースコードの通りに、空のダブルクォーテーションを記述してから、ダブルクォーテーションで囲われたフルパスを記述する。こうすることで、バッチファイル(cmd)からの指定したアプリケーションの起動が可能になる。



複数用意しておけば画面が埋まっているときでも楽に起動できる

なお、今回は例としてGoogle Chromeを起動するコードとしたが、フルパスの部分を任意のアプリケーションに置き換えることで、好きなアプリケーションを起動できるようになる。この際、分かりやすい別の名前で保存しておくと、呼び出しやすくなる。

このバッチファイルは、1個作っておくとファイルコピーができる。そして、コピーしたファイルに対して、ファイル名のリネームとパスの書き換えを行えば、いくらでも作ることができる。対応するアプリケーションのバッチファイルを用意しておけば、画面が埋まっていても新たにアプリケーションを起動するのが楽になる。バッチファイルで起動できるようにしておけば、わざわざアイコンをダブルクリックするためにウィンドウを移動する必要はないのである。

操作を簡略化して楽をしよう

今回は初心者向けとして、cmdとバッチファイルの簡単な解説、cmdの環境変数の設定、そして簡単なバッチファイルを実際に作成し実行して、その成果を確認するところまでを行った。想定はcmd・バッチファイル初心者であること、それに伴ってこのような構成とした。

今回はここまでだが、バッチファイルの基本的な部分はおさえることはできると考えている。また、cmdのコマンドに関してはリファレンスが多いため、少しずつ覚えていくことも可能である。

そして、バッチファイルは使いこなすことで、作業効率の向上を図ることができる、簡単で使いやすい手段である。バッチファイルの中身に関しては、初心者が徐々に使えるように書いていくので、シリーズ化して書いていく予定でいる。

敷居が高いように思えるが、実は少しのきっかけと小さな成果の積み重ねで、徐々に抵抗なく進んでいけるものである。私からは、これで少しでもバッチファイルを使える人が増えると嬉しいものである。

 

以上、CMDとバッチファイルの入門編であった。それでは、次回の記事で会おう。

 

リンクス岐部(LINKS-KIBE) at 10:26 Apr. 18th, 2020


スポンサーリンク




脚注   [ + ]

1. MS-DOSで使用されていたCUIのシェル。現在のcmdと違い、シングルタスクである。参照:COMMAND.COM – Wikipedia
2. NT系以前のWindowsにおいて、MS-DOS互換環境(DOS窓)を起動するアプリケーションのこと。参照:DOSプロンプト – Wikipedia
3. cmdのコマンド。Change Directoryの意であり、”cd [存在するディレクトリの絶対パスまたは相対パス名]”でカレントディレクトリの変更が可能である。cmdにおける基本コマンドの1つである。
4. 新たなcmd画面を開くコマンド。単体ではあまり使われない。アプリケーションを開く際によく利用されるが、GUI環境が標準の今、cmdから手入力で起動することは少ない。バッチファイルでアプリケーションを起動する際に利用することが多い。
Links_Kibe
会社員という働き方が合わないのに会社員になってしまった、自称社会不適合者。自力で稼いでいくために奮闘中。PCとラーメンとXperia 1をこよなく愛する、自由になりたい人である。ゲームやガジェット、仕事中心に書いていく。

コメントを残す

メールアドレスが公開されることはありません。
名前は必須項目となります。記入をお願いいたします。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)