さて、のっけからコマンドスクリプトが続いたわけですが、
この辺で、各自カスタマイズできるように、少し解説を
加えておきましょう。
と言っても使用しているコマンドの完全な解説などは行いません。
あくまでも使用している範囲での即物的な解説に止めておきます。
もっとちゃんと勉強しようという人は、まずコマンドの調べ方を
覚えてください。
これには大きく2通りの方法があります。
■コマンドラインから調べる
まず
>
help
と入力し、次にコマンドの詳細を知りたいので
>
コマンド名 /? (または
help コマンド名)
と入力します。
■ヘルプから調べる
●Windows2000
[スタート]→[ヘルプ]→[リファレンス]
→[Windows2000コマンドリファレンスメインページ]
●WindowsXP
[スタート]→[ヘルプとサポート]
→[ツール を使ってコンピュータ情報を表示し問題を診断する]
→[コマンド ライン リファレンス]
では、始めます。
| 条件付き処理記号 |
1行に複数コマンドを条件付きで記述できます。
& cmd1 & cmd2 cmd1の次にcmd2が実行される
&& cmd1 && cmd2 cmd1が正常終了した場合cmd2が実行される
|| cmd1 || cmd2 cmd1が異常終了した場合cmd2が実行される
() (cmd1 & cms2) コマンドをまとめたりネストしたりする
;, cmd p1,p2 コマンドのパラメタを区切る
|
|
| リダイレクト演算子 |
入出力先を切り替えます。
> 出力先をファイルやデバイスにする
< 入力をキーボードからにする
>> 出力を追加書き込みする
>& あるハンドル出力を別ハンドルに書き込む
<& あるハンドルからの入力を別ハンドルに書き込む
| パイプ。コマンド出力を別コマンド入力に接続する
ハンドルには、
stdin(0)
stdout(1)
stderr(2)
が定義されており、3-9はユーザー定義
dir | sort dirの出力をsortの入力にパイプ(フィルタ)
dir > c:\file.txt
dir 2> c:\file.txt
dir >> c:\file.txt
dir 1>> c:\file1.txt 2>> file2.txt
dir 1>> c:\file1.txt 2>&1
|
|
| バッチパラメタ |
コマンドファイルに渡されるパラメタを受け取れます。
%0~%9まで使え、
%0は、コマンドファイル名に置き換わります。
%1-%9までで足りない場合はshiftコマンドを使います。
%*は、%0を除くすべてのパラメタを受け取ります。
パラメタを修飾することもできます。 | | %~1 | %1を展開し、二重引用符("")がある場合はこれを削除します。 | | %~f1 | %1を完全修飾パス名に展開します。 | | %~d1 | %1をドライブ文字に展開します。 | | %~p1 | %1をパスに展開します。 | | %~n1 | %1をファイル名に展開します。 | | %~x1 | %1をファイル拡張子に展開します。 | | %~s1 | 展開されたパスにショート ネームだけを含めます。 | | %~a1 | %1をファイル属性に展開します。 | | %~t1 | %1をファイルの日付と時刻に展開します。 | | %~z1 | %1をファイル サイズに展開します。 | | %~$PATH:1 | 環境変数 PATH に指定されているディレクトリを検索し、%1を、最初に見つかったファイルの完全修飾名に展開します。環境変数の名前が定義されていない場合、またはファイルが見つからない場合、この変数は空の文字列に展開されます。 |
これは組み合わせることもできます。
%~dp1 %1をドライブ文字とパスに展開します。
また、この修飾は後ほど説明するforコマンドの変数にも使えます。 |
|
echo [on | off]
echo メッセージ |
メッセージを表示します。
on(off)スイッチを指定すると、以降のスクリプトを表示(非表示)します。
改行のみしたい場合には、
echo.(またはecho: echo+ echo/ echo=など)
とします。
echo行自体を表示したくない場合は先頭に@を付けて@echo
とします。
|
|
set [変数名]=[文字列]]
set /A 式
set /P 変数名=[プロンプト文字列] |
環境変数に文字列を代入します。
set 変数名=
とすると削除することを意味します。
/Aスイッチを付けると式を評価できます。
演算子には、
( ) ! ~ - * / % + - << >>などC言語ライクなものが
使えます。8進数や16進数も使えます。
/Pスイッチを付けると、キーボードからの入力を代入できます。
また、環境変数の内容を使う場合は%変数名%とします。
環境変数の展開・置換として、
%変数名:文字列1=文字列2% ;文字列1を文字列2に置換
%変数名:文字列1=% ;文字列1を削除
%変数名:~10,5% ;11文字目から5文字分(抜き出し)※ティルダ10カンマ5
%変数名:~-10% ;最後の10文字分(抜き出し)
%変数名:~0,-1% ;最後の1文字以外のすべて(抜き出し)
とか使うことができます。
forとかif文の複合文中で変更された環境変数の結果をさらに使いたい場合
は遅延環境変数の展開(!変数名!)を使います。
ただし、/V:ONオプションを付けてcmd.exeを起動するか
setlocal ENABLEDELAYEDEXPANSION
で拡張しておかなければ使えません。
また空白文字に注意してください。
set abc=xyz
set abc =xyz
は異なる変数です。
これは右辺の文字列に対しても同じことが言えます。
set abc= xyz
特殊文字(&,|,^,<,>)を文字列とするときはその前にエスケープ文字(^)
をつけます。
set abc=xxx^&yyy |
|