/? の冒頭部分だけ載せる。
まず、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条件で待てると良いのだが。