【Windows Server】.batファイル(バッチファイル)と.cmdファイル(スクリプトファイル)の書き方をまとめました

Windows Server

MS-DOSやWindows 95/98/ME等に搭載されていたコマンドラインインタプリタ「 COMMAND.COM」を使用するのが「BATファイル(.bat)」で、 Windows NT系( Windows10/8/7/Vista/XP/2000等)で使用するのが「CMDファイル(.cmd)」でしたが、現在ではどちらのファイルでも違いはありません。

バッチファイル(.batファイル)の作成手順は以下です。

  • メモ帳を開く
  • Windowsのコマンドプロンプトで実行可能なコマンドを記載する
  • 拡張子を.batにして保存する

作成したバッチファイル(.batファイル)はダブルクリックすることで実行可能です。

バッチファイルを作成する

実際にバッチファイルを作成してみます。以下の画像のように処理を記載します。

ファイル→名前を付けて保存を選択します。

ファイルの種類を「すべてのファイル」にし、ファイル名の末尾を.batにして保存する。

保存した.batファイルをダブルクリックするとコマンドプロンプトが立ち上がり、先ほど記載したコマンドが実行されます。

コメントの書き方

.batファイルにコメントを追加するには以下の記載を行います。以下の処理では、コマンドプロンプトの実行結果にrem以下の記載内容が表示されます。

rem 作成日yyyy年㎜月dd日、作成者 xxxx
ping 8.8.8.8

pause

また、この例の場合ではrem以下に日本語の文字列が含まれるので、.batファイルの文字コードをANSIに設定していないと文字化けした状態でコマンドプロンプトにコメントが表示されます。

コマンドプロンプトの実行結果ウィンドウにrem以下のコメントを表示させたくない場合にはremの前に@を記載します。

rem 作成日yyyy年㎜月dd日、作成者 xxxx
ping 8.8.8.8

pause

こうすることでコマンドの実行結果画面でコメントが表示されない状態になります。

コマンドを実行したホスト名、コマンドの実行時間を記録して出力する

以下のコマンドを記載したバッチを作成して実行すると、コマンドを実行したホスト名(コンピュータ名)、サインインしているユーザー、コマンドの実行時間を記録したテキストファイルを出力できます。

pause

echo hostname > C:\Log.txt
hostname >> C:\Log.txt
echo signinuser >> C:\Log.txt
whoami >> C:\Log.txt
echo exectime >> C:\Log.txt
echo %date% %time% >> C:\Log.txt

pause

上記のコードをコピーしてからメモ帳に張り付け、拡張子を.batにして保存して管理者で実行します。

サービスの一覧を確認してテキストファイルに保存するバッチ

echo %date% %time% >> C:\Log.txtの下にあるpause配下に、実行してテキストファイルで記録したいコマンドを記載します。例えば、サービス一覧をテキストファイルにして抜き出したい場合は以下のバッチを作成して管理者から実行します。

このバッチファイルでは文字コードをANSIにして保存します。

pause

echo hostname > C:\Log.txt
hostname >> C:\Log.txt
echo signinuser >> C:\Log.txt
whoami >> C:\Log.txt
echo exectime >> C:\Log.txt
echo %date% %time% >> C:\Log.txt

pause

sc query state= all | findstr DISPLAY_NAME >> C:\Log.txt

このコマンドの場合、DISPLAY_NAMEで表示される日本語の文字コードがANSIなので、.batファイルの文字コードがUTF-8だとテキストファイルの日本語部分が文字化けします。この場合では.batファイルの文字コードをANSIで保存しましょう。

その他の処理

その他バッチの細かい処理については以下のサイトが参考になりました。

バッチファイルの作成
複数のコマンドを実行する一連の作業をテキストファイルに記載保存したものがバッチファイルです。バッチファイルを実行すると、ファイルに記載された通りに1つずつコマンドが実行されます。バッチファイルでは繰り返しや条件分岐など簡単な構文も記載できる...
タイトルとURLをコピーしました