CMD.EXEって何?
まず、CMD.EXEって何?という向きもあるかと思いますので、用語解説など。
御存知の方は暫しお付き合い戴くか、読み飛ばしてください
(^^;)
CMD.EXEというプログラムはコマンドプロンプト(CMmmanD
prompt)と言われており、
Windows9X/Me/NT/2000をお使いの皆さんならお分かりかと思いますが、
CUIを実現
するシェルプログラム、 いわゆる「 DOS窓
」のことです。
御存知でない方のためにもう少し説明すると、Windows
以前のDOS時代はキーボード
から命令文 (コマンド)を文字ベースで入力することでPCへの命令を伝えていました。
このインターフェースをWindows上で実現するものと思って戴ければ結構です。
WindowsCE機にはこの(恐らくWindowsNT/2000の)サブセット版「PocketCMD」が搭載
されている訳です。
では次に使用方法を見てみましょう。
「PocketCMD」の使い方
早速PocketCMDを起動してみましょう。 エクスプローラを開いて、\Windowsフォルダ
の中から「CMD.EXE」というファイルを探しだし、スタイラスでタップしてください。
これ
で、PocketCMDが起動するはずです(画面1)。
毎回探すのが面倒だとか、よく使うからというのであれば、
デスクトップ上にショート
カットを作ってみても良いと思います。
画面1 PocketCMDを起動したところ
起動すると「 \> 」という文字が表示され、その横でなにやら点滅しています。この文字
列が入力を促すための「プロンプト」と呼ばれるもので、点滅しているものが「カーソル」
と呼ばれています。ここにコマンドを打つと文字が挿入される仕組みになっています。
ちなみに今回はPocketCMDのバージョンが「3.0」になっているのも画面最上段の文字
から確認することが出来ますね。
さて使い方ですが、コマンドは通常次のような書式で構成されます。
コマンド△[引数またはオプション]↓
(注)△は半角スペースを,↓は「Enter(リターン)キーを押す」ことを示す。
[ ]内は省略可能。
このように入力し、最後にEnter(リターン)キーを押して確定すると、処理が実行されま
す。例えばこんな具合に...
\> TYPE△abc.txt↓
この場合、コマンド名(TYPE)+ファイル名(abc.txt)で「ファイルabc.txtの内容を画面に
表示しなさい」という意味になります。(画面2)
画面2 TYPEコマンドを実行
どんなコマンドが使えるかは
\> HELP△↓
と入力すれば分かりますし、それぞれのコマンドの意味と使用方法は
\> HELP△コマンド名↓ (ex. \>
HELP△TYPE↓)
と打ち込めば説明が表示されますのでそちらを利用してみてください。
さて、ここでこのようなコマンド文主体のインターフェースを使って何が良いのか?とい
う話になります。Windows以前、すなわちDOS
の時代にはこのようなコマンドは必要不
可欠でしたが、 今ではエクスプローラやアイコンをいじればそれなりの操作ができてし
まう御時世です。 知らなくても済んでしまいますが、
知っているとちょっと便利なことも
あるのです。
例えばメールで人に自分のMobileGearIIのディレクトリ(フォルダ)の構成を知らせると
き、貴方ならどうしますか?そんな時には...
\> DIR△>△aaa.txt↓
とすれば\(ルート)でのディレクトリ構成一覧をaaa.txtに吐き出すことが出来ます。
なお、この時画面には内容は表示されません。「>」で出力先を画面からaaa.txtへ変更
したからです(ちなみに「>」はリダイレクションと言います)。
このようにちょっとした時に役に立ちますので、覚えておいて損はないでしょう。
それから最も便利なのが「バッチファイルが使える」という点です。バッチファイルという
のはこれらコマンドを予めファイルに1行1コマンドずつ記述しておき、
まとめて処理す
るファイルのことです。例えばSAMPLE1.BATというファイルに
【ファイル名 SAMPLE2.BAT】
ECHO SAMPLE1.BAT開始
TYPE AAA1.TXT
TYPE AAA2.TXT
DIR /W
cd \TEMP
DIR /W
ECHO SAMPLE1.BAT完了
と記述しておき,
\> SAMPLE1.BAT↓
とすれば
1.画面に「SAMPLE1.BAT開始」と表示
2.AAA1.TXTの内容を表示
3.AAA2.TXTの内容を表示
4.今いるディレクトリの一覧を表示
5.\TEMPディレクトリに移動
6.TEMPディレクトリの一覧を表示
7.画面に「SAMPLE1.BAT完了」と表示
という処理を一気に処理します。まぁ、この例だけでは大したことはできませんが、色々
なコマンドを組み合わせることで様々な処理を順次自動実行することができ、なかなか
便利です。 実際DOS時代は様々なバッチファイルが編み出されこれだけでもかなり快
適な環境が構築できたものです。
「PocketCMD」を使ってみる
さて、ちょっと導入部分が長くなってしまいました。でも最近はDOSを御存知でない方も
多いので、念のためと言うことで... (^^;)
TOM★がPocketCMDの存在を知ったのはVer.2.0の時でした。
某会議室で「 CE機に
もCMD.EXEがあるよ」と言う話を聞き、そこではちょっとした話題にもなったのですが、
使用方法やコマンドに制約が多かったので、こりゃ使えないなという話が出ていました。
私もいじってみたのですが、なかなか自由に使えずに四苦八苦した記憶があります。
今回OSがバージョンアップしたので、ではどういう風に変わっているだろう?果たして
実用に使えるのかどうか?と疑問に思い、今回やっと(苦笑)確認してみました。
(本当はもっと早く色々確認したかったのですが多忙で時間がとれなくて...
(T_T) )
で、従来のバージョンでは一番重宝されると思われたバッチファイルの起動ですら、
[\] cmd△<△\SAMPLE1.BAT↓
などと非常にトリッキーなことをしないとバッチファイルそのものが起動しませんでした。
今回この点はきちんと改善されていて、ちゃんとMS-DOSライクにコマンドラインから
\> SAMPLE1.BAT↓
と入力すればバッチファイルが起動するようになっています(画面3)。
ということでバッ
チファイル
の起動法など操作方法についてはWindows9X/NT/2000と同様のものとな
り、特に違
和感無く使えるかと思います。この辺りはようやくまともに使えるようになった
という感じです。
画面3 普通にバッチファイルが起動できる
ただし「Pocket」と名前が付いているように色々と制約も多く、Windows2000のCMDで使
えるコマンドでもいくつか使えないものもあります。基本的にはHELPに書かれていない
コマンドは使えない訳で、試しに FC (2つのファイルの内容を比較)や
FIND(文字列の
検索)といったコマンドが実行できるか試したものの、やはり使えませんでした。
バッチファイル専用のコマンドとしては IF〜EXISTやGOTO、 それから変数など基本的
なものについては使えるものの、 BATKEY ( ユーザ選択による分岐処理
)や FOR
(ループ文)といったものは使えません。例えば...
【ファイル名 SAMPLE2.BAT】
echo off
cls
prompt $p$g
echo ファイル名を変更します
pause
for %%i in (1 2 3 4 5) do ren aaa%%i.txt
bbb%%i.txt
echo 完了しました。
これは単にファイル名aaa1.txt、aaa2.txt...aaa5.txt を全てbbb1.txt...bbb5.txtに変
えるだけの単純なバッチファイルです。ちょっと応用すれば機械的な通し番号のデジカメ
画像ファイル名を一括変換するのに使えそうですね。
で、当然Windows2000のCMD では問題なく実行出来ますが、PocketCMDで実行すると、
「for.exe を実行できません」というつれないメッセージが出てきてしまいます(画面4)。
画面4 FOR文は使えない(悲)
実はCMDでは制御変数を使った計算式 ( I=I+1 )などは記述できません。 こういったこ
とから比較的単純なバッチファイルについては簡単に作成することが出来ますが、DOS
時代の
ように複雑な分岐条件やループ文などを作るときには、
若干の工夫が必要かも
しれません。
どうやら前述のサンプルもGOTO文やラベル制御などで強引にループ制御を作らないと
いけないようです。
個人的には流石にWindows2000のCMDでも搭載されていないコマンド(BATKEYなど)は
無理としても、 せめてFORなど気の利いたバッチファイルが手軽に作れるレベルのコマ
ンドは実現して欲しかったと思うのが正直なところです。
さて、最後に簡単ながらまともな例を一つ。WindowsCEの場合、
H/PCでも画面が狭くて
ファイル検索は割と面倒で、かつ標準添付のエクスプローラでは弱いので、
ちょっとした
バッチを作ってみました。ルート(\)にWHEREIS.BATを置いてバッチ名+検索したいファ
イル名を入力すると、求めるファイルがどのフォルダにあるか検索してパス名を返します
(画面5)...というか返すはずです(笑)。
【ファイル名 WHEREIS.BAT】
@ECHO OFF
CD \
IF "%1"=="" GOTO
USAGE
DIR %1 /O:N /S /B /P
GOTO END
:USAGE
CLS
ECHO ファイル名を指定して下さい。
ECHO <使用法>
ECHO WHEREIS 検索するファイル名
ECHO ex.WHEREIS abc.txt
:END
画面5 WHEREIS.BATの実行画面
ということで即席で例を作ってみましたが、
このままでは名前順にしか SORTされない
など不満な点も沢山あり、 若干物足りないかもしれません。ということで後は皆さんで
工夫してみてください(爆)。
まとめ
今となっては出番が少なくなってしまったCMDやバッチファイルですが、
探せばまだま
だ使い道はあると思います。 多少の制約はありますが、 工夫次第であるいは快適環
境も夢
ではない?かもしれません。DOS フリークの方もそうでない方も、 ちょっとした
頭の体操にPocketCMDでバッチファイルを活用してみては如何でしょう?
(2001-03-04)