[記事公開日]2025/10/06
🔄 shiftコマンドの使い方|バッチファイルでの引数操作の基本
もくじ
はじめに
Windowsのバッチファイルを活用する際、複数の引数を受け取って処理を行うケースはよくあります。例えば、ファイル名のリストや数値パラメータを渡して順に処理したいときなどです。そんな時に便利なのが shiftコマンド です。引数をシフトさせて処理対象を順番に移動させることで、バッチファイルの柔軟性が大きく広がります。
この記事では、shiftコマンドの基本的な仕組み、使い方、実用的な活用例や注意点を詳しく解説します。
🛠 shiftコマンドとは?
-
役割:バッチファイルに渡された引数を1つずつシフトさせ、次の引数を処理対象にする
-
用途:可変長の引数処理、ループ処理での順次消化
-
特徴:
%0はバッチファイル自身を表し、%1からが引数。shiftコマンドを実行すると%1に%2の内容が入り、以降すべて繰り上がる
📌 基本的な使い方
コマンド構文
shift [/n]
-
/n:シフトを開始する引数番号を指定(デフォルトは%1)
例:シンプルな引数シフト
@echo off
echo 最初の引数: %1
shift
echo シフト後の引数: %1
-
実行例:
test.bat apple orange banana-
最初は
%1=apple -
shift後は
%1=orange
-
🔍 応用的な使い方
すべての引数を順に処理する
@echo off
:loop
echo 引数 = %1
shift
if not "%1"=="" goto loop
-
任意の数の引数を渡しても、すべて順番に処理できる
/n オプションを使う
@echo off
shift /2
echo 2番目以降をシフト: %2
-
/2を指定すると、%2からシフトを開始できる
実行例
test.bat one two three four
-
shift前:
%1=one, %2=two, %3=three -
shift後:%1=two, %2=three, %3=four -
shift /2後:%2=three, %3=four
📚 活用シーン
複数ファイルを順次処理
@echo off
:next
if "%1"=="" goto end
echo %1 を処理中...
rem 実際の処理コマンドをここに記述
shift
goto next
:end
echo 全ての処理が完了しました。
-
複数のファイル名を渡して一括処理するバッチで活用可能
コマンドライン引数による柔軟なバッチ制御
-
例えば:
backup.bat C:\data D:\backup E:\logのように複数のディレクトリを渡しても対応可能
可変長パラメータを扱うスクリプト
-
引数の数が事前に決まっていなくても、shiftを使えば順番に処理可能
⚠️ 注意点
-
shiftを実行すると前の引数は失われるため、必要なら事前に変数に退避する必要がある
-
バッチファイルの引数は最大9個まで直接参照可能(
%1~%9)。それ以上の引数を扱う場合、shiftを駆使して処理する必要がある -
/nオプションはWindows 2000以降でサポート
📊 まとめ表
| コマンド | 説明 | 活用例 |
|---|---|---|
| shift | 引数を1つ繰り上げる | 可変長引数の処理 |
| shift /2 | 2番目以降をシフト | 一部引数をスキップして処理 |
関連記事
-
callコマンドで別バッチを呼び出す方法
-
forコマンドで繰り返し処理を行う方法
-
choiceコマンドでユーザー入力を処理する方法
-
ifコマンドで条件分岐を行う方法
さいごに
shiftコマンドは単純ですが、バッチファイルの引数処理を強力にする必須テクニックです。特に、可変長の引数を受け取るスクリプトや一括処理バッチを作成する際に重宝します。これを理解することで、バッチ処理の柔軟性は大幅に向上します。
