2023.09.24
【Windows】コマンド一覧(バッチファイル用)

UnsplashDawid Zawiłaが撮影した写真

はじめに

バッチでよく使うWindowsコマンドをまとめた記事です。

動作確認した環境

OS:Windows11 Home

基本編

最もよく使うコマンド類です。

バッチファイルの作成方法

バッチファイルの作成方法については以下をご参照ください。
https://tekutekku.com/windows_how_to_make_batfile/

コメント(rem)

rem [コメント]
例)rem これはコメント!

 

【補足】ラベルの応用として、以下でもコメントを記載できます。

:: [コメント]
例):: これはコメント!

出力(echo)

値を出力するechoはデバッグにも必須のコマンドです。

echo 出力する値

処理を一時停止(pause)

デバッグに必須のコマンドで、
バッチ処理が終わってもコマンドプロンプトを開いたままにします。

pause

 

「pause」を使うと何かしらキーボードからの入力があるまで処理が止まります。

echoで出力しpauseで処理を止めると、変数の値を確認できて便利です!

変数の定義&呼び出し(set)

■変数の定義

変数を定義するにはsetを使います。

set 変数名=値
例)set a=sampleです!

※変数名、=、値の間にスペースは不要です。

■変数の呼出

変数を呼び出すには変数名を「%」で囲みます。 

echo %変数名%
例)echo %a%

ループ処理(FOR)

ループ処理の基本構文は以下です。

FOR オプション %%変数 IN (ループ処理の対象) DO (
  ~ループする処理~
)

 

オプションによってループの仕方が変わります。
ここでは指定回数ループする書き方のみのご紹介です。

■指定回数ループする:/L

FOR /L %%変数名 IN (開始値, 増分, 終了値) DO(
  ~~ループする処理~~
)

5回繰り返す場合の例

FOR /L %%a IN (1, 1, 5) DO(
  echo %%a
)

条件分岐(IF)

基本的な構文は以下です。

IF 条件式 (
  ~~処理~~
) ELSE (
 ~~処理~~
)

※「(」の前には必ず半角スペースが必要です。

 

例です。
以下の場合条件(1==2)はFALSEなので、0が出力されます。

chcp 65001
IF 1 == 2 (
 echo 1
) ELSE (
 echo 0
)

比較演算子

条件分岐で必須の比較演算子一覧です。

比較演算子意味
A EQU BAとBが等しい
A NEQ BAとBが異なる
A LSS BAがBより小さい(<)
A LEQ BAがB以下(<=)
A GTR BAがBより大きい(>)
A GEQ BAがB以上(>=)

処理をまとめる系(サブルーチン、外部ファイル呼び出しなど)

サブルーチン(関数)

rem メインルーチン
call :サブルーチン名  ⇐サブルーチンの呼び出し
exit /b         ⇐ルーチンの終わりに必ず記述する

rem サブルーチン(関数)
:サブルーチン名       ⇐サブルーチンの定義
  ~~サブルーチンの処理を記述する~~
exit /b

以下は例です。

例)rem メインルーチン
    echo '処理を開始します。'
  call :subroutine    ⇐サブルーチンの呼び出し
   echo '処理を終了します。'
  exit /b       ⇐ルーチンの終わりに必ず記述する

  rem サブルーチン(関数)
  :subroutine     ⇐サブルーチンの定義
   echo サブルーチン実行!
  exit /b

引数

■引数の定義

引数は%1, %2~%9で定義します。
(%0にはバッチファイル名が自動で格納されています。)

以下は引数をechoで出力する例です。

例)バッチファイル名:echo1.cmd
  ↓↓ ファイル内の記述 ↓↓

@echo off
echo cmdファイル名:%0
echo 引数1:%1
echo 引数2:%2

※文字列として「%」を出力する場合は「%%」と記載します。

■引数の渡し方

バッチファイル名 [引数1] [引数2]
例)echo1 abc def

上の例では「echo1.cmd」というバッチファイルに引数を渡しています。

外部のバッチファイルを呼び出す

外部のバッチファイルを呼び出すコマンドは「call」と「start」がありますが、基本的に「call」を使います。

ちなみにですが、「call」と「start」の用途はこんな感じです。

 

callコマンド:バッチファイル、サブルーチンを呼び出すコマンド

startコマンド:バッチファイル、アプリを呼び出すコマンド。(サブルーチンは呼び出せない)

 

以下には「call」と「start」それぞれの使い方をご紹介します。

■callコマンドの使い方 ※特徴:同期処理

call [ファイルパス]
例)call C:/Users/%USESRNAME%/alias/cdh.cmd

 

■startコマンドの使い方 ※特徴:非同期処理(オプションで同期処理にもできます)

start [ファイルパス]
例)start C:/Users/%USERNAME%/alias/cdh.cmd

その他

startコマンド

バッチファイル、アプリを呼び出せるstartコマンドの基本的な使い方は以下です。

start [ファイルパス]

 

startコマンドは呼び出すファイルのパスに空白があるとうまく動作しません。

パスに空白がある場合には以下のように書きます。

start "" "[空白ありのパス]"
例)start "" "C:/Program Files"

startの直後に「””」を中身空白で記述することでパスに空白があってもバッチファイルを実行できます。

GOTOコマンド

gotoコマンドは処理の途中で別の行に飛べるので便利です!

■ラベルの場所に処理を飛ばす

GOTO [ラベル名]

■ラベルを定義する

: [ラベル名]

■GOTOを使った例

echo start
goto last
echo first

:last
echo Last

コマンド自体の出力を止める(@echo off)

バッチ処理を実行すると、実行したコマンド自体が出力されてしまいます。

例えばバッチファイルに「echo test」と書き込み、バッチを実行した場合以下のようになります。
>echo test  ⇐この出力を止めます
test

コマンド自体の出力はこれで止められます。

@echo off

「@echo off」を書いた行以降に適用されるので、バッチファイルの1行目に書き込むことをおすすめします。

コマンドを続けて実行(&&, ||)

■「処理1」が成功したら「処理2」を実行

[処理1] && [処理2]
例)cd / && echo success

■「処理1」が失敗したら「処理2」を実行

[処理1] || [処理2]
例)cd / || echo error

文字コードの変更(chcp)

コマンドプロンプトの文字コードを確認・変更するコマンドです。

■文字コードの確認

chcp

■文字コードの変更

chcp [文字コード]
例)chcp 65001

※文字コードの番号一覧:https://learn.microsoft.com/ja-jp/windows/win32/intl/code-page-identifiers

バッチ実行中のみ有効な環境変数を定義する

setlocal  ⇐開始タグ
  ~~ここで定義、書き換えた環境変数はバッチ終了後に元に戻る~~
endlocal  ⇐終了タグ

以上です。