DOCMD コマンドラインを実行する

書法

DOCMD [param]* [option]*

SHELLMODE

@記述、!記述、^記述

詳細

コマンドラインにある全てのパラメータをコマンドラインとして実行する。
通常は先頭から順次実行するが、並列実行(-P,-I)、中間ファイルによる接続実行も出来る。

通常の実行

パラメータをコマンドラインとして、先頭から順に実行する。
特にオプションを指定しない限り、この方法で実行する。

並列実行

パラメータをコマンドラインとして、それぞれを同時に実行する(-I、-P)。
並列実行では、同時に並列実行するコマンドラインの数に制限が設けられている(デフォルトは8)。 パラメータは先頭から順にコマンドラインとして起動されるが、 この制限の数を超えると、現在実行中のコマンドラインのいずれかの終了を待ってから起動する。
DOCMDはすべての起動されたコマンドラインが終了した後、自分自身が終了する。

中間ファイルによる順次実行

パラメータをコマンドラインとして、先頭から順に実行するが、 それぞれのコマンドラインの標準入出力は中間ファイルを通じて接続される(-S)。
コマンドライン内でのコマンドのパイプ接続と異なり、接続する数の制限がないので、 膨大な処理の連続を記述する場合などに有利である。
中間ファイルはWINDOWSのテンポラリディレクトリに展開される。

コマンドの実行方法

それぞれのコマンドライン自体の実行方法には、次の四種類がある。 これは、各パラメータを実行する方法であって、 コマンドラインの並びの実行方法ではない。
  1. 無名パイプ接続による実行(標準)
    コマンド記述内の全てのコマンドは平行して実行する。 標準的にはこの方法で実行すること
  2. 中間ファイル生成による実行(-F)
    コマンド記述内のコマンドは、一つづつ順番に実行する。 パイプの接続には中間ファイルが用いられる。
  3. MS-DOSコマンド経由による実行(-C)
    コマンド記述をMS-DOSのCOMMAND.COMに与えて実行する。 この場合だけ、MS-DOSバッチ処理の呼び出しも可能である。 Windows Xpなどでは無効。「cmd /c ...」で代替する。
  4. コマンドラインを単独のコマンドとして実行する(-Z)
    パイプライン接続やリダイレクトのための解釈を行わないため、プログラムの引数の記述がゆるくなる。wperl.exeなど、クォーティング規則が異なるプログラムを実行する際に使うと良い。

OPTION

-C
各コマンドラインをDOS窓のCOMMAND.COM経由でコマンド実行
-E[filename]
標準エラー出力をファイルにリダイレクトする。 ファイル名を省略すると標準出力にリダイレクトする。 ファイル名の先頭に「+」を付けるとファイルに追記する。
-F
各コマンドラインを中間ファイルを用いた実行方法で実行
-In
並列処理の上限をnとして並列実行指定。nは2-128。
あまり大きな数を指定すると、システムに負荷が掛かりすぎる。 通常はこのオプションを指定する必要はない
-N
標準入出力を無効にする。
DOCMDを直接WINDOWSから起動する場合は、この指定をすると便利。
-P
並列実行指定。
通常はこのオプションを用いる。
並列処理の上限は8となっているが、 この数は実行するコマンドライン数の制限ではないことに注意すること。
-Q
環境変数TS_NOWINDOWを利用して高速実行する
-S
コマンドライン列のパイプライン接続順次実行指定。
-Xpathname
カレントパスを設定する。
-Z
コマンドラインをプログラムとして実行する。「|」「>」「<」なども使用できない。

用例

参考

DOITコマンドラインによる繰り返し実行
DOTABタブファイルによる繰り返し

バージョン

Ver 1.042012/08/04エラー出力の追記機能
Ver 1.032012/06/15OPTION -Z 導入
Ver 1.022012/04/24nulハンドルの扱い変更
Ver 1.012012/04/23標準エラー出力リダイレクト
Ver 1.00初版