コマンド別解説

shift(引数をずらして格納しなおす)

>>shiftのオプション簡易解説へ

目次

 

「shift」コマンドの使い方

「shift」コマンドは、指定した引数を一つ番号の小さい方へずらすコマンドです。10個以上の引数を指定したとき、10番目以降の引数を参照するときによく用いられます。バッチファイルに引数を指定して実行するとき、以下のように指定します。

このとき、バッチファイル内でこれらの引数を参照するときは、「%1」、「%2」、…を使用します。引数との対応は、

%1 → 引数1
%2 → 引数2
%3 → 引数3

となります。

以下に、引数を参照したバッチファイルの例(arg_noshift.bat)を示します。

以下に引数を指定して実行した例を示します。

shift(引数をずらして格納しなおす) 引数を指定して実行

 

次に、引数の確認前に「shift」コマンドを一回実行するバッチファイル(arg_shift1.bat)を示します。

4行目に「shift」コマンドを追記しました。以下、実行結果です。

shift(引数をずらして格納しなおす) 「shift」コマンドを1回実行して引数を確認

「%1」には第2引数で指定した値が入っています。また、「%2」、「%3」にも一つずつずれた引数が代入されていることが分かります。

%1 → 引数2
%2 → 引数3
%3 → 引数4

このように、「shift」コマンドを実行すると、一つずつ引数がずれて「%?」に代入されるのです。

 

さらに、引数の確認前に「shift」コマンドを2回実行したバッチファイル(arg_shift2.bat)、

を実行すると、結果は以下のようになります。

shift(引数をずらして格納しなおす) 「shift」コマンドを2回実行して引数を確認

%1 → 引数3
%2 → 引数4
%3 → 引数5

 

10個以上ある引数を読み込む

「shift」コマンドはよく10個以上ある引数を読み込むときに使用されます。

通常、バッチファイルに指定できる引数の上限は9個です。それは、引数を格納するプレースホルダー「%1,%2,…%9」が9個までしか用意されていないためです。しかし、「shift」コマンドを利用すると10個以上の引数も指定できるようになります。

例えば、以下のように12個の引数を指定してバッチファイルを実行したとします。

このままでは、「%1」から「%9」には「arg1」から「arg9」が格納されています。

%1 → arg1
%2 → arg2
%3 → arg3

%9 → arg9

「%10」などは存在しませんので、第10引数以降はこのままでは参照できません。そこで、「shift」コマンドを使用します。

12番目の引数を参照したい場合には、「shift」コマンドを3回実行すれば、引数は左に3つずれて、

%1 → arg4
%2 → arg5
%3 → arg6

%9 → arg12

となるため、「%9」に12番目の引数が代入され、「%9」を参照すれば、第12引数が参照できます。

以下に、確認のためのバッチファイル(arg_shift3.bat)を示します。

以下、実行結果です。

shift(引数をずらして格納しなおす) 「shift」コマンドを3回実行して引数を確認

 

ただし、この方法では「shift」コマンドを実行するたびに小さい方の引数が順に使えなくなってしまいます。上の例では、「shift」コマンドを3回実行したため「arg1」から「arg3」を参照することができなくなっています。

全ての引数をいつでも参照できるようにするには、配列(もどき)と組み合わせた方法がよく利用されます。これは「10つ以上の引数を指定する -やりたいことから検索-」で詳しく説明しています。

 

Windowsバッチファイル初心者へ向けた入門書を作成しました


Windowsバッチファイル初心者の方へ向けた入門書(PDF)を作成しました。


・初めてWindowsバッチファイルを勉強してみようと思っている方

・使ったことはあるが一から基礎を学び直したい方


へ向けて丁寧な解説を行っています。


「全くプログラムを知らない方でも、この入門書を読んだ後には、Windowsバッチファイルの中級者レベルになれるように」をコンセプトに執筆したものです。


この本を読めば、バッチファイルを使ったファイルやフォルダの操作に関しては一通りのことができるようになります。そうなればもう十分中級者と呼べるレベルですので、あとは自分のやりたいことを実現しようとする中で徐々に知識を蓄えていくだけですぐに上級者へなれるでしょう。


詳しくみる

関連ページ

コメントを残す