DOSコマンド大事なやつだけ

 

全文はDOSプロンプトから

Ø       HELP <コマンド>

で参照可能。

 

 

FOR

Ø       FOR %variable IN (set) DO command [command-parameters]

%variable        単一文字変数としてvariableを置き換える

(set)                1つもしくは複数のファイル(群)を指定

command        各ファイルに対して実行したいコマンドを指定

command-parameters

                      実行するコマンドのスイッチや引数を指定

 

注1)   バッチプログラム内では%variableの代わりに%%variableを使う必要がある。

注2)   variableは大文字小文字を区別する。

 

コマンド拡張機能がサポートされている場合、以下の書式も使用可能である。

 

Ø       FOR /D %variable IN (set) DO command [command-parameters]

setがワイルドカードを含む場合、ファイル名ではなくディレクトリ名にマッチするように仕向ける。

 

Ø       FOR /R [[drive:]path] %variable IN (set) DO command [command-parameters]

[drive:]path]を起点として、FORコマンドをツリー内の各ディレクトリに対して実行する。

ディレクトリが/Rの跡に指定されていない場合は、現在のディレクトリが走査の起点となる。

setがただ単に単一のピリオド(.)の場合、ただ単にディレクトリツリーを列挙する。

 

Ø       FOR /L %variable IN (start,step,end) DO command [command-parameters]

この場合、setstartからendまでの連続した数字で、そのとび幅はstepによって指定される。

よって(1,1,5)の場合、数字として1 2 3 4 5が指定され、(5,-1,1)の場合、数字として5 4 3 2 1が指定される。

 

Ø       FOR /F [“options”] %variable IN (file-set) DO command [command-parameters]

Ø       FOR /F [“options”] %variable IN (“string”) DO command [command-parameters]

Ø       FOR /F [“options”] %variable IN (‘command’) DO command [command-parameters]

このファイル名のセットとは1つもしくは複数のファイル名のセットである。それぞれのファイルはOpenされ、Readされ、処理されてから次のファイルの処理に移る。

ファイルの中身を読む際に、ファイルの内容はまず各行に対して仕分けされ、それからそれぞれの行が0個以上のトークンに分解される。

それからFORループの本体がvariableの値にトークンの内容がセットされた状態で呼ばれることになる。デフォルトでは、/Fは各行に対して最初の空白で区切られたトークンを渡す。

その際、空白行はスキップされる。この分解の振る舞いは”options”パラメタを指定することにより変更することができる。これはクオートにかこまれた文字列で、1つ以上のキーワードをもち、それによってさまざまな分解オプションを指定する。キーワードは以下。

        eol=c                    - 行の終わりを示す文字を指定(1文字のみ)

        skip=n                  - ファイルの先頭からスキップする行数を数字で指定

        delims=xxx           - デリミタのセットを指定。この指定によって、デフォルトのデリミタであるスペースとタブを置き換える

        tokens=x,y,m-n      - それぞれの行の何番目のトークンをFOR本体の繰り返し処理に渡すかを指定。

その結果、変数が追加されることになる。書式m-nm番目からn番目までのトークン範囲をあらわす。

またtokens=で指定された最後の文字が*(アスタリスク)の場合、さらに追加の変数が割り当てられ、

その行の残りの文字列が、最後のトークンが分解された後に(追加された変数に)割り当てられる。

        usebackq              - バッククオートで囲まれた文字列をコマンドとして実行し、シングルクオートで囲まれた文字列をその文字通り解釈し(元々は文字列はダブルクオートだった)、

空白のあるファイル名をダブル区オートで囲って単一のファイル名として解釈することを可能にする。

 

例)FOR /F "eol=; tokens=2,3* delims=, " %i in (myfile.txt) do @echo %i %j %k

 

FORの以下の説明はDOSヘルプ本文を参照されたい)

 

MSTSC

RemoteDesktopダイアログを立ち上げる。

 

START

プロセスを開始する。その際に色々な情報を付加してプロセスを起動することができる。

 

Ø       START ["title"] [/Dpath] [/I] [/MIN] [/MAX] [/SEPARATE | /SHARED]

      [/LOW | /NORMAL | /HIGH | /REALTIME | /ABOVENORMAL | /BELOWNORMAL]

      [/WAIT] [/B] [command/program]

      [parameters]

 

TASKKILL

プロセスをとめる。UNIXkillコマンドと似ている。

 

Ø       TASKKILL [/S system [/U username [/P [password]]]]

         { [/FI filter] [/PID processid | /IM imagename] } [/F] [/T]

 

(応用:STARTTASKKILLを使って、止めたいコンソールのみを殺す方法)

1)STARTにてWINDOWTITLEを設定してコンソールを立ち上げる

$ start "<WINDOWTITLE>" <start up script>.bat

2)TASKKILLにてフィルタを、WINDOWTITLEで指定して、プロセスを終了する

$ TASKKILL /F /FI "WINDOWTITLE eq <WINDOWTITLE>*" /T

注)フィルタにはワイルドカード(*)が使える。