WinBatchEh 1.28 (Batch File Enhancer for Windows) ドキュメント ★ はじめに Windows でも DOS のバッチファイルの様に簡単にプログラミングが楽 しめれば、Windows 環境が便利になると思いませんか? そうあのバッチフ ァイルの手軽さが Windows でそのまま実現できてしまうのです。 無論 DOS と同じバッチが走るだけではありません。IF や FOR 文は構 造化が可能で WHILE によるループも行なえますし、GOSUB によるサブル ーチンの呼び出し、PRINTF による書式に従った出力も可能です。さらに Windows らしいバッチを作成する場合にはメッセージボックスによる表示 や、ダイアログによるファイル名選択、ボタンメニューによる分岐など、 GUI を盛り込んだアプリケーション作成の為のコマンドが用意されていま す。 WinBatchEh を使えば、ちょっとした Windows アプリが簡単に作成でき ることが実感できるかと思います。 ★ 配布ファイル・動作環境など アーカイブには以下のファイルが含まれます。ディレクトリが含まれま すので解凍を行なうときはディレクトリ付きで復元(LHA であれば x コマ ンド)してください。 以前のバージョンでは 16 ビット版と 32 ビット版を同梱していました が、現在は分離しています。 16ビット版(WBAT???N.LZH): WINBATCH.EXE - 16ビット版実行ファイル WINBATCH.HLP - 16ビット版オンラインヘルプ WBDLL16.DLL - 16ビット版用DLL 32ビット版(WBAT???P.LZH): WINBAT32.EXE - 32ビット版実行ファイル WINBAT32.HLP - 32ビット版オンラインヘルプ WINBAT32.CNT - 32ビット版オンラインヘルプ用コンテンツファイル WBDLL32.DLL - 32ビット版用DLL 16/32ビットの両方に含まれるファイル: WINBATCH.TXT - このドキュメント WINBATRG.TXT - レジストレーションについての説明 SAMPLE\ - サンプルバッチのディレクトリ WINBATHS.TXT - ヒストリー 実行ファイル(*.EXE と *.DLL)、ヘルプファイル(16 ビット版では *.HLP, 32 ビット版では *.HLP と *.CNT) は同じディレクトリに入れて ください。 16 ビットバージョンは、Windows 3.1 日本語版上の 386 エンハンスド モードで動作します。Windows 3.0 や 286CPU 上では動作しません。 32 ビットバージョンは Windows 95, Windows NT(Intel) の日本語版上 で動作します。Windows 3.1 の Win32s 配下では環境変数がすぐに不足し たり、コマンドによっては動作しない事があります。Windows 3.1 では 16 ビットバージョンを使用してください。 32 ビットバージョンのヘルプファイルは新しいバージョンの形式を使 用していますので、Windows NT 3.5 では読み込む事ができません。 Windows NT 3.51 以降の環境で使用するか、16 ビット版のヘルプファイ ルを WINBAT32.HLP の名前で上書きしてください。 WinBatchEh はシェアウェアです。機能制限等は一切ありませんが試用 期間の 2 週間を過ぎるとときどき登録に関する案内が行なわれるように なります。詳しくは「オンラインヘルプ」または「WINBATRG.TXT」をご参 照ください。 なお、WinBatchEh のドキュメントはすべてタブサイズが 8 であること を想定して書かれています。 ★ インストール方法 WinBatchEh のための適当なディレクトリを作成し全部のファイルを同 じところに解凍を行なってください。なお、解凍時はディレクトリオプシ ョンを有りにして解凍してください(DOS 版の LHA であれば "LHA x ファ イル名" のようにしてください)。 WinBatchEh を快適に使うには、バッチファイルの拡張子の .BTW の関 連付けが 16 ビット環境では WINBATCH.EXE、32 ビット環境では WINBAT32.EXE になるように設定してください。PATH は必ずしも設定する 必要はありませんが、実行ファイルをフルパスではなくファイル名のみを 入力して WinBatchEh を起動するような場合には設定してください。 なお WINBATCH.EXE、または WINBAT32.EXE を起動して SAMPLE のディ レクトリの 00SETUP.BTW を実行すれば、サンプルバッチなどがプルグラ ムマネージャまたはスタートメニューに登録され、関連付けも自動的に行 なわれます。 なお、サンプルバッチはコメントを記入するのに "REM" ではなく ":/" の記述を使用しています。始めて見た方は異様な感じを受けるかも 知れませんが、DOS のバッチでも "REM" より ":/" を使用した方が、速 く処理が進み、リダイレクト文字なども記入できる事から、わたしは好ん で使用していますので、お許しを(^_^;)。 ★ アンインストール方法 WinBatchEh を削除するには解凍したディレクトリ内のファイルをすべ て削除してください。また、関連付けを行なった場合は、その設定も消去 してください。 ★ 起動方法 ○ バッチファイルのオープン WINBATCH.EXE または WINBAT32.EXE をパラメーターなしで起動すると バッチ内容表示ウィンドウが現れます。「ファイル」メニューの「オープ ン」でバッチファイルをオープンしてください。ファイルマネージャなど からドロップしても OK です。 オープン後は「スタート」でバッチがスタートします。「スタート」を 行なうと項目が「ストップ」に変わりますので、動作中のバッチを止めた い場合は「ストップ」を押してください。ちなみにこのスイッチは左上の システムメニュー内にもありますのでアイコン状態でも使用できます。 バッチファイルの拡張子は別に何でも構いませんが、BTW(BaTch file for Win)や、普通に BAT などが無難ではないかと思います。オープンメ ニューで最初にでてくるのもこの 2 つの拡張子のファイルです。 ○ エディターの設定と起動 バッチファイルの変更は WinBatchEh では行なえませんので変更を行な う場合は「ファイル」メニューのエディター起動または SHIFT+[Enter] でエディターを起動させて変更してください。 エディタ名は初期値は NOTEPAD.EXE になっていますので、変更する場 合は「ファイル」の [設定] メニュー を選択してください。エディタで ファイルを更新した場合のバッチファイルの自動再読み込みの有無などの 設定もこのメニュー内で行ないます。 ○ バッチファイルを実行した後 バッチを実行中はバッチ実行ウィンドウ(DOS の画面みたいなもので す)が現れます。普通のバッチを動かした場合はここにメッセージなどが 表示される事になります。このバッチ実行ウィンドウが邪魔な場合は "EXECWND OFF" で、表示が行なわれなくなります。 また、バッチ内容表示ウィンドウは現在実行中のバッチの行にあわせて スクロールが行なわれ、どの行が実行されているか確認を行なうことがで きます。このウィンドウも邪魔な場合は "BATWND OFF" でアイコン状態に なります。 ○ WINBATCH.EXE/WINBAT32.EXE からバッチを直接起動 WINBATCH.EXE/WINBAT32.EXE をプログラムマネージャなどに登録し、さ らにパラメータとしてバッチファイル名を指定すれば、そのバッチファイ ルの実行がすぐに始まり、バッチファイルが終われば、WinBatchEh も終 了します。 「オープン」メニューからバッチを読み込んで「スタート」した場合は バッチ終了時にメッセージが表示されキー入力待ちとなりますが、パラメ ーターを付けてバッチを直接実行した場合、このメッセージも出なくなり ます。 ★ WinBatchEhで使えるコマンド一覧 それぞれのコマンドの詳しい説明についてはオンラインヘルプをご参照 ください。 ○ 基本コマンド @ ECHO ON の状態でもコマンド行の表示を行ないません。 %数値, %環境変数%, %% パラメーターの指定や環境変数の内容を参照します。 REM [文字列] コメント行の指定で実行されません。 ECHO 文字列, ON/OFF 文字列出力、実行中の行のエコーの有無を指定します。 PAUSE [コメント文字列] メッセージを表示し、何かキーが押されるまで待ちます。 SET 変数名=文字列 環境変数への代入を行ないます。 IF(バッチコマンド互換) 条件の判定を行なって続く文を実行します。 GOTO LABEL LABELの行にジャンプします。 FOR(バッチコマンド互換) 繰り返し実行を行ないます。 SHIFT バッチのパラメーターを左にシフトします。 EXIT バッチファイルから抜けます。 実行ファイル名 ファイルを実行します。 CALL バッチファイル名 バッチファイルを呼び出します。 ○ COMMAND.COM内部コマンド CLS バッチ実行ウィンドウの内容を消去します。 DIR ディレクトリの内容を表示します。 A: などドライブ名のみ カレントドライブを変更します。 CHDIR (または CD) カレントディレクトリの変更または表示を行ないます。 MKDIR (または MD) ディレクトリの作成を行ないます。 RMDIR (または RD) ディレクトリの削除を行ないます。 COPY ファイルのコピーを行ないます。 REN (または RENAME) ファイル名の変更を行ないます。 DEL (または ERASE) ファイルの削除を行ないます。 TYPE テキストファイルの内容表示を行ないます。 リダイレクト出力 表示する代わりにファイルに出力を行ないます。 ○ 拡張コマンド GETVERSION WinBatchEhのバージョンを取得します。 BATCHWND (BATWND) バッチ内容表示画面の表示の制御を行ないます。 EXECUTEWND (EXECWND) バッチ実行画面の表示の制御を行ないます。 ERRORLEVEL の参照・設定 ERRORLEVELを文字列として参照、また設定ができます。 GOSUB LABEL 〜 RETURN サブルーチンを呼び出します。 構造化 IF 〜 ENDIF 構造化の行なえるIFです。 WHILE 〜 ENDWHILE 条件の判定を行なって、繰り返し実行を行ないます。 構造化 FOR 〜 ENDFOR 構造化の行なえるFORです。 EXEC 実行ファイル名 実行ファイルを状態を指定して起動します。 START 実行ファイル名 実行ファイルを状態を指定してマルチに起動します。 MORE テキストファイルの表示をページ制御ありで行ないます。 GETKEYSTATE 指定のキーが押されているかどうかを調べます。 CHOICE 選択肢の中のキーが入力されるのを待ちます。 LET 環境変数に計算結果を代入します。 PRINTF 書式に従って表示を行ないます。 SPRINTF 書式に従って環境変数に代入を行ないます。 GETCURRENT カレントドライブ名やディレクトリ名を取得します。 GETCLOCK 現在の日付や時刻を取得します。 STRTOKFILE 与えられた文字列からファイル名などを抜き出します。 FILELINE ファイルの行数を返します。 LINPUTFILE 指定のファイルの特定の行を抜き出します。 TIMESTAMP ファイルのタイムスタンプの比較、取得を行ないます。 FILESIZE ファイルのサイズの比較、取得を行ないます。 CDD ドライブとディレクトリを移動します。 PUSHD/POPD ドライブとディレクトリを移動/復帰します。 WHICH 実行ファイルの存在を確認します。 TEMPFILENAME 一時ファイル名を取得します。 SLEEPTIME 指定した時間、動作を止めます。 ON ... メニューなどを選んだ場合に特別な処理を行ないます。 STR ... 文字列操作を行ないます。 DRV ... ドライブ情報の取得を行ないます。 FINDWND ... ウィンドウの検索を行ないます。 ○ Windows用必殺コマンド GETCURSORPOS マウスカーソルの現在位置を取得します。 SETCURSORPOS マウスカーソルの位置を設定します。 CLIPCURSOR マウスカーソルの移動可能な範囲を設定します。 GETFOCUS 現在フォーカスが設定されたウィンドウを取得します。 SETFOCUS 指定のウィンドウにフォーカスを設定します。 SHOWWINDOW 指定のウィンドウの状態を変更します。 GETWINDOWRECT 指定のウィンドウの位置及びサイズを取得します。 SETWINDOWRECT 指定のウィンドウの位置及びサイズを設定します。 SETWINDOWPOS 指定のウィンドウの配列順序、位置、サイズを設定します。 MESSAGEBOX (MSGBOX) メッセージボックスの表示を行ないます。 MESSAGEBEEP (MSGBEEP) サウンドを再生します。 NONSTOPMESSAGE (NONSTOPMSG) バッチの処理を続けたままメッセージ表示します。 DISPLAYTXT テキストファイル(TXT)を表示後、応答を待ちます。 DISPLAYBMP ビットマップファイル(BMP)の表示を行ないます。 SNDPLAYSOUND WAVファイルまたはWIN.INIのentryのサウンドを再生します。 INPUTSTRING 文字列入力を行ないます。 SELECTSTRING リストボックスから文字列の選択を行ないます。 CHOICEBUTTON ボタンの中から選択をして選んだボタンの値を返します。 GETOPENFILENAME ファイル名の選択(または入力)を行ないます。 DROPFILEWAIT ファイルがドロップされるのを待ちます。 CHOOSECOLOR 色の選択を行なって環境変数に代入します。 EXITWINDOWS Windowsを終了します。 RESTARTWINDOWS Windowsを再起動します。 REBOOTSYSTEM Windowsを終了しシステム(マシン)を再起動します。 EXITWINDOWSEXEC Windowsを一旦終了し、DOSの実行ファイルを実行します。 GETINISTRING INIファイルの文字列を取得します。 WRITEINISTRING (SETINISTRING) INIファイルに文字列を設定します。 GETREGSTRING レジストリデータを取得します。 SETREGSTRING レジストリデータを設定します。 SYSTEMPARAMETERSINFO (SYSPARAMINFO) システムパラメータの取得、設定。 GETCLIPBOARD クリップボードから文字列を受け取ります。 SETCLIPBOARD クリップボードに文字列を設定(送出)します。 POSTMESSAGE アプリケーションにメッセージを送ってすぐに戻ります。 SENDMESSAGE アプリケーションにメッセージを送って応答を待ちます。 SENDMENUKEY アプリケーションのメニューを選択します。 SENDKEY キーコードを直接送ります。 DDEEXECUTE DDEサーバーにコマンドを実行させます。 ★ WinBatchEh仕様上の注意 ☆扱えるバッチファイル 扱えるバッチファイルは、ファイルの大きさは関係ありませんが、最大 8192 行です。また、1 行の最大文字数は 512 文字です。 ☆扱えるファイル名 16 ビットバージョンでは長いファイル名はサポートしていませんが、 32 ビットバージョンでは長いファイル名も扱えます(空白を含むファイル 名も " " で囲う事により指定できます)。 ☆環境変数の領域 環境変数の領域は 16 ビットバージョンでは自前の領域を用意し、容量 的には約 64KB 程度使用できます。32 ビットバージョンではシステムで 用意された領域を使用し、容量的には約 16KB 程度は使用できるかと思い ます。 また、1 つの環境変数の長さは変数名と文字列を合わせて 500 文字程 度まで使用できます。 16 ビットバージョンでは子プロセスとして起動した実行ファイルへの 環境変数の受け渡しは行なわれません(WinBatchEh を起動したときの環境 変数が渡されます)。32 ビットバージョンでは現在実行中のバッチの環境 変数の内容が引き継がれます。 ☆バッチ上で起動する実行ファイルについて DOS 用のソフトについては実行できるものとできないものがありま す。(実行できなくても終了を待つ場合がありますので、その場合「スト ップ」で終わらせてください)。 また、Windows 用ソフトでも、一度しか起動しないアプリケーションを すでに起動している状態で、さらに EXEC や実行ファイルのみで起動させ ると、バッチに戻ってこないことやすぐにバッチに戻ってくる場合があり ます。 実行ファイル名にパス名を含めない場合はカレント, WINDOWS, Windows の SYSTEM, WinBatchEh 起動時に設定されていた環境変数 PATH のディレ クトリ(16 ビットバージョンでは WinBatchEh 内で設定した PATH は参照 しません)を検索に行きます。 実行ファイル名にバッチファイルを与えると、WinBatchEh が現在処理 しているバッチを終了して、そのバッチファイルに制御を移します。なお、 CALL 文を使用すれば、元のバッチに戻ってきます。 EXEC や実行ファイルのみでプログラムを起動している間は、ハードウ ェアによっては、省電力モードに移行するパワーマネージメント機能など が使用できない場合があります。 ☆パラメーター・環境変数の引継 WinBatchEn を終了せずに続けて同じバッチの「スタート」を行なうと、 環境変数の設定が前の状態のままとなります。また SHIFT コマンドを使 用した場合も移動した結果がそのまま継続されます。 WinBatchEn から他のバッチを「オープン」メニューでオープンした場 合及びバッチ内でバッチを起動した場合、環境変数の設定は以前の実行結 果のままになっています。 また、バッチへのパラメーターは、「ファイル」メニューの「オープン」 を行なった場合、及びエディターなどを起動してバッチの再読み込みを行 なった場合、%0 以外はすべて消去されます(%0 にはバッチ名が入ってい ます)。 バッチ内でバッチを起動した場合及び CALL で呼び出した場合はそのバ ッチへのパラメーターが設定されます。なお、CALL の場合は元のバッチ に戻ったときに以前のパラメーターに戻ります。 ☆文字列・定義文字列・数値・環境変数の指定について コマンドによっては文字列をパラメータに必要とするものがありますが、 通常は ["](ダブルクォーテーション)で囲いますが、文字列内で ["] を 使用したい場合は、['](シングルクォーテーション)で囲うこともできま す。 数値の指定と定義文字列の両方が書かれているものについては、できる だけ定義文字列の方を使用してください。数値は今後のバージョンで変更 が行なわれる可能性があります。 数値や定義文字列を '+' や '-' で計算を行なうときは、間にスペース などを入れないでください。 数値の指定では先頭を '0x' で始めると 16 進数の指定、それ以外の場 合は 10 進数の指定となります。 また数値指定で 1 文字のキャラクターを指定することもできます。キ ャラクターを指定する場合はシングルクォーテーション ['] で文字を囲 ってください(例: 'A')。 環境変数の指定の部分で "=" のみを指定するとバッチ実行ウィンドウ に出力することができます。これを利用して SPRINTF などの引数に、コ マンドの実行出力を代入することが可能になります。 ☆その他16ビットと32ビットバージョンの違い Windows の GUI 自身の違いにより、16 ビットと 32 ビットバージョン で、表示される内容(表現)に違いが起きる場合があります。 ツールバーは 32 ビットバージョンでのみサポートしています (ツール バーは Windows95 または Windows NT 3.51 以降で動作しているときのみ 表示されます)。 ★ 終わりに もし、お気付きの点や要望等がありましたら下記までご連絡願います。 もちろん、NIFTY-Serve の会議室(FEXT MES 3/FGALTS MES 12)に書き込ん で頂いても結構です。 ご質問などを頂く場合は機種と OS、それに WinBatchEh のバージョン を明記して頂けますと助かります。 バグの対処などは可能な限り行ないますが、本ソフトウェアを使用した 為に生じたいかなる結果についても、作者は責務を負わないこととします。 とは言え、バグ報告や要望はじゃんじゃん受け付けますので(実現に致る かどうかは定かではありませんが^^;)、お気軽にご連絡を頂ければと思い ます。 清水 洋平(Paci) NIFTY-Serve SDI00618 Internet-Mail SDI00618@niftyserve.or.jp