Windows Vista/7 で増えたコマンド

/? の冒頭部分だけ載せる。


まず、CMDのビルトインコマンドで増えた物は、help の出力を比較して外部コマンドを除いてみると、1つだけ。

MKLINK
シンボリック リンクを作成します。

MKLINK [[/D] | [/H] | [/J]] リンク ターゲット

        /D          ディレクトリのシンボリック リンクを作成します。既定では、
                    ファイルのシンボリック リンクが作成されます。
        /H          シンボリック リンクではなく、ハード リンクを作成します。
        /J          ディレクトリ ジャンクションを作成します。
        リンク      新しいシンボリック リンク名を指定します。
        ターゲット  新しいリンクが参照するパス (相対または絶対)
                    を指定します。

これは使えるが、どうもWindowsシンボリックリンクっていまいち信用しきれず自分では使っていない。ハードリンクはもっと怖い。まあ、偏見のような気はするけど。


外部コマンドは、\Windows\System32 の EXE COM を比較してみると、かなり増えているが、バッチ処理で使えそうな物は少ない。

CHOICE

これは、昔Windows95時代にあったコマンドの復活。オプションは少し変わっているようだ。
/C で指定した文字のどれかをキーインして、何番目かをERRORLEVELで返す。
XPではバッチスクリプト中で、キー入力して分岐する方法が set /p しかなかったのでかなり改善。

CHOICE [/C 選択] [/N] [/CS] [/T タイムアウト /D 選択] [/M テキスト]

説明:
    このツールは、ユーザーが一覧から選択した項目のインデックスを 
    返します。
CLIP

標準入力の内容をクリップボードにコピーする。
クリップボードを扱えるコマンドが標準でできたのは大きい。クリップボードの中身を標準出力にだすコマンドも欲しかった。

CLIP

説明:
    コマンド ライン ツールの出力を Windows クリップボードにリダイレクトします。
    その出力されたテキストをほかのプログラムに貼り付けることができます。

SendToフォルダに、

echo %* | clip

というバッチファイルを入れておくと、「フルパスをクリップボードに」という事ができる。

EVENTCREATE

Unixのlogger相当。単独ではあまり意味が無いが、イベントログトリガーでプロセスを起動するなどすれば使える。

EVENTCREATE [/S システム [/U ユーザー名 [/P [パスワード]]]] /ID イベントID
            [/L ログ名] [/SO ソース名] /T 種類 /D 説明

説明:
    このコマンド ライン ツールで管理者が指定のイベント ログに
    カスタム イベントを作成します。
FORFILES.EXE

Unixのfindコマンド相当。これは使えそう。

FORFILES [/P パス名] [/M 検索マスク] [/S]
         [/C コマンド] [/D [+ | -] {yyyy/MM/dd | dd}]

説明:
    ファイル (または、ファイルのセット) を選んで、そのファイル上の 
    コマンドを実行します。これはバッチ ジョブの使用に便利です。
ROBOCOPY

非標準で提供されていたrobocopyコマンドが標準になった。
フォルダコピーやフォルダー同期を行い、中断しても再開できる。

使用法:: ROBOCOPY コピー元 コピー先 [ファイル [ファイル]...] [オプション]
TASKLISTとTASKILL

VBScript等を使わなくてもタスクの終了などが出来る。

TASKLIST [/S システム [/U ユーザー名 [/P [パスワード]]]]
         [/M [モジュール] | /SVC | /V] [/FI フィルター] [/FO 形式] [/NH]

説明:
    ローカルまたはリモートのシステムで実行されている
    プロセスの一覧を表示します。

TASKKILL [/S システム [/U ユーザー名 [/P [パスワード]]]]
         { [/FI フィルター] [/PID プロセスID | /IM イメージ名] } [/T] [/F]

説明:
    このツールは、プロセス ID (PID) またはイメージ名を指定して、タスクを終了するために使われます。
TIMEOUT

一定秒数待つコマンド。
従来は、ping -n 秒数+1 localhost >NUL という方法で行っていたが、カウントダウン表示付きで専用コマンドで行えるようになった。
しかもキーを押すと残りの待ちをスキップできる。

TIMEOUT [/T] タイムアウト [/NOBREAK] 

説明:
    このユーティリティでは、タイムアウトのパラメーターを指定して、一定の時間 (秒)
    が経過するまで、またはユーザーが任意のキーを押すまで、プログラムを待機
    させることができます。
    キー入力を無視するためのパラメーターを指定することもできます。
WAITFOR

バッチスクリプト同士の待ち合わせをするためのコマンド。
ただ、待つのが1つだけなので、ジョブネットのようなことはしにくいが、別PCとも連携できるので、なにかいい使い道があるかもしれない。
が、ちょっと考えても思いつかない。どういう使用例を考えて作られたのか?

WaitFor の使用法は 2 とおりです: 

構文 1: シグナルを送信する場合、
    WAITFOR [/S システム [/U ユーザー [/P [パスワード]]]] /SI シグナル

構文 2: シグナルを待機する場合、
    WAITFOR [/T タイムアウト] シグナル

説明:
    このツールにより、システム上でシグナルを送信したり待機したり
    できます。/S が指定されていない場合、シグナルはメイン内のすべての
    システムにブロードキャストされます。/S が指定されている場合、
    シグナルは指定したシステムにのみ送信されます。

POSTされる前にWAITしてしまうと待ち続けることになるため、使いにくい。
複数のシグナルをAND条件で待てると良いのだが。

WHERE

whichコマンド相当だが、? や * も指定できる。
複数ディレクトリや環境変数も参照できるのでかなり高機能。これは要研究。

WHERE [/R ディレクトリ] [/Q] [/F] [/T] パターン...

説明:
    検索パターンに一致するファイルの場所を表示します。
    既定では、現在のディレクトリおよび PATH 環境変数によって指定された
    パス内を検索します。