2012年10月6日土曜日

バッチファイルを作成する




ドスは、コマンドを一括して処理するためのバッチファイルと呼ばれるものがあります。
ほとんどの人々は、バッチファイルが、DOS環境を簡単に作るという事実を過小評価するのに、コンピュータをもっと使いやすくしたい場合は、バッチファイルを必ずついて移ることをお勧め。

▶バッチファイルとは?



コンピュータの動作状態を調べてみると、常にユーザーとの相互作用によって作業が行われることを知ることができます。ドスというOSもユーザーがコマンドを入力すると、そのコマンドについて、DOSが分析して、ユーザーが期待する結果を提供します。
したがって、ユーザーは常に、DOSプロンプト上でいちいちキーボードを利用したタイピングに命令を下すと、一つの命令が下されると完了するまで、次のコマンドを下げることができません。作業過程がいくらならなければ大きな問題はないが、その過程が非常に長く複雑であれば、ユーザーは退屈さを感じさせます。また、たとえ短い作業過程でも、コンピュータの電源を入れるたびに毎回同じ過程をいちいち指示することも面倒です。
このような場合、バッチファイルは、最も明白な解決策です。

バッチファイルの機能は、順次であり、繰り返された同じ作業過程をいくつかの、あるいは数十、数百個の関連コマンドを一つのファイルに集約して、その一つのファイル(バッチファイル)のみを実行することにより、目的の作業の手順を実行することです。バッチファイルにつく拡張子は。bat(batchの略)です。ドスで実行が可能なため。com、。exe拡張子が付く外部コマンドと一緒に実行可能なファイルに分類されます。違いがある場合。com、。exeコマンドは、コンピュータ万解釈可能な機械語コードで構成されているのに対し、バッチファイルは、人が認識可能なプレーンテキストで構成されているということです。

そのため、ユーザーは文書作成に利用するワードプロセッサやテキストエディタなどを利用してバッチファイルを作成することができます。しかし、ワードプロセッサは、図体が大きく、元の目的が編集と出力のために作られたものなので、単純なバッチファイルを作成するにはお勧めしません。

保存時もワードプロセッサ固有のフォーマット(例えば、 "。hwp拡張子を持つアレアハングルデータファイル)に保存すると、認識されないため、ASCIIファイルとして保存する必要があります。最も簡単な方法は、一般的な文書エディタ(DOSのEdit、Qエディタは、Uエディタなど)を利用したり、DOSの "Copy Con"コマンドでバッチファイルを作成することです。次のように "Copy conファイル名"の形式で入力してエンターを押すと、DOSプロンプトの状態で編集できる状態になります。
-------------------------------
C:\ Bats> copy con Timedate.bat
cls
time
date
^ Z

1 File(s)copied
-------------------------------

ここで書きたいように書くだけです。一番最後の行の^ Zはファイルの一番最後の部分であることを、DOSに通知するコードで<Ctrl + Zキー>キーまたはF6キーを押します。そしてエンターキーをもう一度押すと、'1 File(s)copied "というメッセージが出力されるが、これは先ほど" copy conファイル名 "で作成された文書ファイルが正常に作成されたという意味です。上記の文書ファイルは、拡張子が。BATについたため、実行可能な外部コマンドになりますが、バッチファイルはコマンドが記録されている順序で実行されるため、timedate.batを実行すると、最初に画面を消しナンドィシステムの時刻と日付を設定します。簡単なバッチファイルは、 "copy conファイル名 "で作成することが、他のプログラムの助けを借りず簡単かつ迅速に処理することができます。しかし、バッチファイルが少し長いの作成中に頻繁に編集することがあるが生じる場合には不可能です。 "copy conファイル名"でファイルを作成すると、行に戻ることができない。ではなく、変更が不可能だからです。したがって、バッチファイルを作成する必要があるときは、文書エディタを利用することをお勧め。

▶バッチファイルの作成コマンド9人衆

バッチファイルは、ファイル内に記録されているコマンドの順序で実行されます。最も代表的なのが、起動に利用され、コンピュータのルートディレクトリにあるAutoexec.batファイルです。しかし、もしバッチファイルの実行の順序を順次ではなく、マルチブート用Autoexec.batのようにユーザー勝手に決めてしたい場合は、バッチファイルで提供される配置コマンドの用途を知っている必要があります。


1。 CALL


現在実行中のバッチファイルを終了せずに、必要な他のバッチファイルを呼び出して実行し、元のバッチファイルに戻ってこようとするときに使用されます。

◇使い方:Call [drive:] \ [パス] \ <配置名> [。BAT]

◇例:Call c:\ bats \ sample.bat

いくつかのバッチファイルを実行する途中でパスC:\ batsのsample.batファイルを実行し、元のバッチファイルに戻ります。


2。 CHOICE

バッチプログラム内でユーザーの選択を頼むために使用されます。バッチファイルの作成者が設定した質問を出力し、指定したキー入力を待ちます。このコマンドは、バッチファイル内でのみ使用可能です。

◇使い方:choice [/ C [:]の文字列] [/ N] [/ S] [/ T [:]主キー、待機時間] [メッセージ]

◇オプション

- / C [:]の文字列:ユーザーが選択できるキーの一覧を[]括弧内に "、"で区切って出力して、/ Cスイッチを使用しない場合、デフォルトでYNが使用されます。

- / N:プロンプトを出力しないようにします。

- / S:ユーザーの入力で小文字、大文字を区別するようにします。

- / T [:]主キー、待機時間:主キーを指定した後、待機時間中に、ユーザーのキー入力がない場合は自動的に主キーが入力されたものとみなして進行されます。指定可能な待機時間は秒単位で、0から99の間の値です。

- メッセージ:画面に出力されるメッセージを指定します。

◇例:choice / c:abCD / s / t:C、5次のいずれかを選択してください、a、b、C、D
◇説明:入力可能なキーを、a、b、C、Dに限定して、ユーザーから入力される英字の大文字、小文字を区別しますが、もし5秒以内にユーザーからのキー入力がなければ、Cが入力されたものとみなします。そして画面には、
"次のいずれかを選択してください、a、b、C、D [a、b、C、D]? "
というメッセージが出力されます。


3。 ECHO

バッチファイルの実行中にコマンドを画面に表示するかどうかを設定し、その状態を表示します。一方、ECHOコマンドは次のメッセージは、画面に表示されます。

◇使い方:echo [on / off] [文字列]

◇オプション
- on:バッチファイルの実行中にそのバッチファイル内のコマンドを画面に表示します。
- off:バッチファイルの実行中にコマンドを画面に出力しないようにします。
- 文字列:画面に出力したいメッセージを入力します。
- なし:現在のECHOの設定状態を表示します。

◇例:

echo off
☞現在実行中のバッチファイル内のコマンドを画面に表示されないようにする。
echo
echoこんにちは?〜
☞現在echoの設定状態を表示しこんにちは。〜というフレーズを画面に出力します。


4。 FOR

指定されたセットの中のそれぞれの要素に対してコマンドで設定した処理を繰り返し実行します。

◇使い方

For%%<変数> IN(<セット>)DO <コマンド> [<オプション>]☞バッチファイル用。
For%<変数> IN(<セット>)DO <コマンド> <オプション>]☞順次処理用。

◇オプション

- %%<変数>、&<変数>:変数として使用されるのは、任意の英字で1ユーザーのみ許可されます。注意する点は、バッチファイルで使用する場合は、必ず%%のように二つを相次いで使用し、一般的なDOSコマンドプロンプトから使用する場合は%のみを使用しています。

- <セット>:%%<変数>に代入したい値を、またはスペースで区切って代入したい順に並べています。

- <コマンド>:%%<変数>に代入された値に対して繰り返し実行したいコマンドを指定します。

- <オプション>:指定されたコマンドのオプションやFORコマンドで指定されたオプションを設定します。

◇例

for%%f in(bak tmp $ $ $)do del *。%%f / p☞バッチファイルの場合
for%d in(read、wh、file)do hlist%d *。*☞DOSプロンプトで実行時

◇説明:最初のbak、tmp、$ $ $を順番に%%f環境変数に代入して順番に
DEL *。bak / p、DEL *。tmp / p、DEL *。$ $ $、pを実行した場合と同じ結果を得ることなる。

第二は、READ、WH、FILEを順番に%dの環境変数に代入して順番に
HLIST READ *。*、HLIS TWH *。*、HLIST FILE *。*を実行した場合と同じ結果が得られます。


5。 GOTO

バッチ処理の流れを<ラベル>で定義されている場所に移動します。

◇使い方:Goto <ラベル>

◇例:
goto loop
:loop
各種処理の内容

◇説明:ラベルloopでバッチ処理の制御を移動させloop項目に指定された各種処理の内容を実行します。

◇注:バッチファイルにラベルを表示するには、ラベル名の前にコロン(:)を付けてくれて行を
変えて先頭に指定する必要があります。


6。 IF

指定された条件の判断結果に応じてバッチ処理を実行します。

◇使い方:If [NOT] <条件> <コマンド>

◇オプション

- NOT:指定された条件の反対の条件の場合にのみ実行します。

- 条件

- ERRORLEVEL <数値>:直前に実行したコマンド(プログラム)の終了コードが<数値>以上の時は本当になって<コマンド>を実行される。

- <文字列1> == <文字列2>:<文字列1>と<文字列2>が同じ場合にのみ真となり、<コマンド>が実行されます。注意する点は、文字列の大文字、小文字が区別され、文字列中に区切り文字(カンマ、スペース、セミコロン、等号、タブ)が含まれている場合はなりません。

- EXIST <ファイル名>:<ファイル名>で指定したファイル(パスを含む)が存在する場合にのみ真となり、<コマンド>が実行されます。 <ファイル名>には、ワイルドカード文字の使用が可能です。

◇例:
if errorlevel 2 goto quit
if not%1 ==%2 goto process
if exist d:\ work \ temp $ $ $ del d:\ work \ temp $ $ $

◇説明:
直前に実行したコマンドの終了コードが2以上の場合、ラベルQUITに移動します。

環境変数%1と環境変数%2に代入されている文字列が同一でない場合にのみラベルPROCESSに移動します。

パスD:\ Workにtemp $ $ $という名前のファイルが存在する場合、そのファイルを削除します。


7。 PAUSE

バッチファイルの実行を一時停止します。

◇使い方:Pause [文字列]

◇オプション

- 文字列:文字列を省略すると "press any key to continue ..."というメッセージが画面に出力されます。もしPAUSEコマンドの後に何かメッセージを指定して、そのメッセージを出力したい場合は、 "Echo On"コマンドを優先しなければならいます。

◇例:
echo on
pause準備ができたら何かキーを押してください...

◇説明:バッチ処理中pauseコマンドに会ったときに、任意の他のメッセージを画面に出力したい場合の例のように、必ずecho onコマンドが先行しなければならず例の場合には、 "準備ができたら何かキーを押してください..."というメッセージが出力されます。

◇注:上記のようにすると、画面にPauseというコマンドまでのように出力されるので、この場合
echo on
echo準備ができたら何かキーを押してください...
pause> Null

このように使用すると、出力したいメッセージが画面に出力されます。


8。 REM

バッチファイル内に注釈文を付与したい場合に使用します。

◇使い方:rem [文字列]

◇オプション

- 文字列:コメントにに書きたいことを書いています。

◇例:REMこのバッチファイルはサンプルです。

バッチファイル内の適切な場所に適切な行にコメントを付けておくとバッチ処理の流れを一目瞭然に見ることができます。


9。 SHIFT

バッチファイルに指定されたパラメータ(%1〜%9)と実行時に指定される値との対応を一つずつ後ろに移動して表示されます。

◇例

:loop
if "%1" == "" goto end
echo%0%1%2%3%4%5%6%7%8%9
shift
goto loop
:end

上記のようにバッチファイルを作成して、以下のようなバッチファイルを実行してみるとshiftコマンドがどのような役割をするのかすぐにわかります。
C:\ bats> test.bat ABCDEFGHIJ 0 1 2 3 4 5☜同じように入力して実行し、[OK]

0 件のコメント:

コメントを投稿