《外変の為のバッチファイル超入門》

 ちょっと、思ったのだが・・・スクリプトについては、

それぞれの言語の解説本とか、WEB上にいろんなサイトがあるわけで・・・

だけど・・いまどきバッチファイルについて解説してる所とか本とかは少ないのでないかな?

と・・・ で・・・ 外部変形をこさえるのに必要な知識ってのもたいしてあるわけでは無いと思うので・・・

ちょこっと解説めいたことをしておいてもいいのかな? と・・


 バッチファイルとは、DOSのバッチ処理を書いておくファイルで、拡張子はbat。

バッチ処理とは、バッチファイルの記述の順番にプログラムやDOSのコマンドを実行する と いうこと・・・

つまりは・・・バッチファイルとは、プログラムやDOSのコマンドを、実行する順番に書いておいて、

日常的な作業をある程度自動化するために書くファイルである。

 と、いうことは、DOSのコマンドを知らないとまずいんじゃないのぉー となるわけです。

ですから、ここでは外部変形的に良く使いそうなコマンドについて解説をしよう。 と、なるわけです。

 で、まずは、DOSのコマンドってのはどんなのがあるか・・・ってのを見てみましょう。

ウィンドウズのスタートボタンを押すと・・・「ファイル名を指定して実行」というのがあります。(解説はWIN2K準拠(^^;;)

そのボタンを押すと、入力窓が出ますので、 CMD と入れてOKボタンを押すと、DOS窓が出現します。

 もし、見難かったり・・黒バックは嫌いだ!という場合は、タイトルを右クリック>プロパティでフォント等ある程度の調整はできます。

ここでの調整はDOS窓としての調整なので、外部変形時にDOS窓が出る場合はこの調整の通りに出ます。

このときのDOS窓の表示は・・・ウィンドウズのバージョンとかの表示の後に なんたらかんたら> の後にカーソルが点滅していると思いますが・・・

そこに help と入力してEnterキーを押してください。

 ずらずらと、なにやら出てきたと思いますが・・・これが、DOSのコマンド一覧ということになると思います。

スクロールバーがつかえるので、ざっとでも見ておきましょう。

最後に先程と同じように なんたらかんたら>点滅 状態になっていると思うので・・・

 HELP copy と helpの後に半角スペース copy と入力してenterを押すと・・・・

copyコマンドの簡単な説明を見ることができます。

このように、各コマンドの使い方のHELPが見ることができることを覚えておきましょう。

 重要なことではないのですが、実はコマンドには2種類有って、ひとつはシェル(ここではCMD)が内部に持っているコマンド。

もうひとつは・・例えばxcopyのように、外部のxcopy.exeを呼び出して実行するもの・・・です。

前者を内部コマンド、後者を外部コマンドと呼んだりします。

DOS時代には、外部コマンドとして呼ぶ拡張コマンドが公開されてたりして、結構便利に使わせていただきました。

 外部変形を中心に話を戻しましょう。

外部変形で使いそうなDOSコマンドを思いつくまま列挙してみると・・・・

echo rem del ren type copy ・・・・一般的にはそんなものかな?

あと、特別な場合に・・・・set dir とかジャバは使うことがありますね・・

 ということで、よく使うecho rem del ren type copyと、その周辺の話を書きますね。

でも、DOSの解説本とか・・探せば、どっかいに有るんだろうけど・・無いので、老人の記憶のみで書き進めますので、

間違いとか、抜けてることとかあると思いますが・・・広い心で読んでくださいね。

そうそう、この画面の なんたらかんたら> の部分をプロンプトと呼びます。

一般的には、アクティブなディレクトリ名に>を表示して入力待ちの状態になっています。

ここの書式をカスタマイズできるのですが・・・興味のある方はご自分で・・・・


 外部変形のバッチコマンドについて書く前に・・・・・

他のプログラムに影響を与えない・終わったら簡単に消去できるように・・・

練習場所を確保しましょう。ここから先はDOS窓内の操作ですので・・・・

CD とか書いてあったら・・プロンプトに CD と入力する・・という意味だと思ってください。

cd c:\

CDはチェンジ・ディレクトリという意味で、アクティブなディレクトリを変更するという意味です。

単に cd だけだと現在のディレクトリを出力します。

プロンプトがc:\>に変わったと思います。

md test

MDはメイク・ディレクトリ で、c:\の下にtestという名前のディレクトリを作ります。

cd test

で、testディレクトリに移動します。

プロンプトは c:\test> になっていますか?

この状態でここから先の練習は行うということにしましょう。

 昨日の続きを練習しようっと・・って、時には・・・ なんたらかんたら>cd c:\test で移動できます。

また cd \ とすると、ドライブのルート(一番の親)ディレクトリに移動します。

また、例えば・・・単にEドライブに移動したい・・なんて時は なんたらかんたら>e: で移動したりもできます。

Eドライブで最後にアクティブだったディレクトリに移動します。

 

 例によって、思いつくまま書きますので・・・・一応項目に分けようとはおもうのですが・・

たぶん、ぐちゃぐちゃ(^^;になるとおもいます。実験しながら読み進んでね。


echo

 エコーです。って(^^;; 意味合いとすれば、入力をまんま出力する・・・って事ですが、

プロンプトで echo test と入力すると、 次の行に test と書いて、入力待ちになります。

これは、出力先が(標準出力と言ったりしますが・・)画面になっているためです。

 echoの別の使い方・・・・の前に・・・

dir としてみてください。

DIR はディレクトリの内容を表示するコマンドです。

0個のファイル 2個のディレクトリ・・・と表示されていると思いますが・・・

この2個のディレクトリというのは・・・"." ".." という名前で表現されているのですが・・・

今いるディレクトリと、親ディレクトリの意味だと思うので(^^;;;無視しましょう・・ヲィヲィ

つまり・・・ファイルも子のディレクトリもまだ無い事を確認しときましょう。

 echoの別の使い方に戻りましょう・・・

例えば・・・ echo test > test.batとすると・・・ test.batというファイルにtestという文字を出力します。

このように > を用いて出力先を画面からファイル等に変更することをリダイレクトする・・とかいいます。

では、もう一度dirしてみましょう。

どうですか?test.txtというファイルができていますか?

確認の意味で・・notepad test.bat としてみましょう。

ノートパッドがtest.batを開いています。

内容は・・testの1行です。echo が test というテキストを test.batに書き込んだことを確認したらnotepadを終了しておきます。

次に・・・

echo notepad test.bat > test.bat と入力してみましょう。

その後で test と入力して、今echoを使って書いたバッチを起動してみます。

ノートパッドがtest.bat自体を開いて起動します。

そこには、今ほどechoを使って書き込んだnotepad test.bat とかかれているだけで、

その前に書いたtestの文字はありません。

これは、echo notepad test.bat > test.bat によって、test.batが書き換えられたことを意味しています。

次に・・echo echo test >> test.bat と入力してみて・・・

再びtestで、実行してみてください。

どうですか?こんどは、先程のnotepad test.bat の次の行にecho test の行が追加されているはずです。

このように、">"を使えば、新規のファイルか、既にある場合は上書きでファイルを作り、

">>"を使えば、既にファイルがあるばあいには、その後ろに追加されるのです。

このリダイレクトの使い方は、typeコマンド等でも共通です。

 あまり、重要だとは思ってないのですが・・・notepadが開いたままならば・・・

notepad test.bat の行の先頭に@をつけて・・・@notepad test.bat として上書きして・・・

もう一度testとして、みましょう。開いたノートパッドは閉じてかまいません。

DOS窓の内容をよくみてください。違いがわかりましたか?

バッチファイルは基本的には、DOSでの手によるコマンド入力を代行するファイルですので、

最初のtest.batを実行した際には c:\test>notepad test.bat のように、バッチファイルの記述がDOS窓に現れていますが、

@を付けたtest.batではそれが現れていません。

このように、@を行頭につけて置くことによって、入力を見せないようにすることができます。

また、バッチファイルで echo off と、書いておくと、それから下の行のコマンドを、同じように見せなくできます。

見えない状態を元に戻すには echo on とします。

外部変形のバッチでおなじみの @echo off というのは・・・こっから下はがめんにださないよ・・・で、この行もださないよ。っていう意味です。


rem

 レムと呼んでますが・・・何の意味なのかな・・・リマインダー・・かな?

まぁ、とにかく・・・この行がコメント(DOSのコマンドとして実行されない)であることを意味します。

外部変形で、この後ろに#jwwとかかいて、JWWへの命令を書いておくのは、

JWWがこのバッチを読んで、準備をした後で、このバッチを実行するわけですから、

DOSのコマンドとして実行されては、困るので、REMとしているわけです。

 本来は・・・バッチファイルを見直したりするときに、後で意味がわかるように、

覚書としてバッチファイルに書いておくもの、なのです。


copy

 コピーです。用は複写ですな。

copy test.bat retest.bat として・・・dir してみてください。

新しくretest.batというファイルができました。

疑い深い方はnotepad等で両方を開いて、retest.batがtest.batのコピーであることを確認してください。

 意外と知らない人がいるかもしれない使い方で・・・・

copy test.bat+retest.bat 3tes.bat とし・・・notepad 3tes.bat で3tes.batを見てみましょう。

このように、+を使って、複数のファイルを1つのファイルにコピーすることができます。

ついでに・・・・F3キーを使って・・・

copy test.bat+retest.bat 3tes.bat > test.txt としてみて・・・・

ん?ハングしましたか?ははは・・・・ctrlキーとc を同時に押してみてください。

もどりましたか?ctrlキーとc を同時押しは処理を中断するキーです。覚えて置いてください。

test.txtの中身をみてください。

このように、画面に出すべき物をリダイレクトを使ってファイルに落とすことができます。

ハングしたように見えたのは、既に3tes.batがあるので、上書きしていいかどうかの入力待ちだったのですが、

画面に出さずにファイルに出力したため、単に止まってしまった様にみえていたのでした。


ren

 リネーム です。ファイルの名前の変更を行います。

ren 3tes.bat test3.bat のように使います。

dirしてみて、3tes.batがtest3.batに変わったのを確認しておきましょう。


del

 デル文とか言いますが・・デリート 消去 です。

del test3.bat とかしておいて、dirでtest3.batが消去されたことを確認しておきましょう.。


type

 タイプです。使い方としては・・・echoにかなり近いのですが・・・・

echo test.bat > test1.txt

type test.bat > test2.txt

として・・test1.txtとtest2.txtの中身をみてみましょう。

echoでtest.batはテキスト(文字としての”test.bat”)として扱われますが、

typeでは入力ファイル名として扱われます。

また、test.batが純粋にテキストファイルであるなら、

type test.bat > test2.txt と copy test.bat test2.bat は結果として同じとなります。


 後半は、結構はしょった感じになりましたが・・・helpコマンド等をつかって、自分で調べることも重要です。

他にも・・・* をワイルドカードとして使うとか・・%1とか・・・..\とか・・・ 書いておきたかったことも有るのですが・・・

一般的な外部変形としてバッチを作るなら・・・・あっ goto文があった!(^^;;;

・・・んーーちょっと、疲れたので・・をぃをぃ・・・ここまでにしますので、goto文は宿題!!!


 next:外部変形用サブプログラム