コマンド: "SHIFT" がオンです Windows 12, 11, 10, .. , MS Server 2025, 2022, 2019, .. 利用可能
コマンドの例 "SHIFT"
の
`SHIFT`Windows コマンド プロンプトのコマンドは、バッチ ファイル内のパラメータの位置を移動するために使用されます。以下に使用例をいくつか示します。
`SHIFT`-指示:
例 1: バッチ ファイル内のパラメーターを反復処理する:
@ECHO OFF
:LOOP
IF "%1"=="" GOTO END
ECHO Parameter: %1
SHIFT
GOTO LOOP
:END
説明:この例では、ループを使用してバッチ ファイル内のすべてのパラメーターを反復処理し、それらを 1 つずつ表示します。コマンド
`SHIFT`パラメータの位置を移動するために使用されます。
例 2: バッチ ファイル内のパラメーターを合計する:
@ECHO OFF
SET 合計=0
:ADD_LOOP
IF "%1"=="" GOTO END_ADD
SET /A 合計+= %1
SHIFT
GOTO ADD_LOOP
:END_ADD
ECHO 合計: %合計%
説明:この例では、パラメータがループ内で合計されます。コマンド
`SHIFT`パラメータの位置を移動し、
`SET /A`合計を更新するために使用されます。
例 3: ネストされたループと SHIFT を使用する:
@ECHO OFF
:OUTER_LOOP
IF "%1"=="" GOTO END_OUTER
ECHO Outer Parameter: %1
SHIFT
:INNER_LOOP
IF "%1"=="" GOTO END_INNER
ECHO Inner Parameter: %1
SHIFT
GOTO INNER_LOOP
:END_INNER
GOTO OUTER_LOOP
:END_OUTER
説明:この例は、その方法を示しています。
`SHIFT`ネストされたループで使用できます。外側のループは外側のパラメーターを処理し、内側のループは内側のパラメーターを処理します。
例 4: SHIFT を使用してパラメータをスキップする:
@ECHO OFF
SHIFT
SHIFT
ECHO 三番目 Parameter: %1
説明:ここでは、最初の 2 つのパラメータが 2 つの連続したパラメータとともに使用されます。
`SHIFT`コマンドはスキップされ、3 番目のパラメータが表示されます。
例 5: パラメータの確認と処理:
@ECHO OFF
:PARAM_LOOP
IF "%1"=="" GOTO END_PARAM
IF /I "%1"=="/DEBUG" (
ECHO Debug-モードが有効化されました.
SHIFT
GOTO PARAM_LOOP
)
ECHO プロセス Parameter: %1
SHIFT
GOTO PARAM_LOOP
:END_PARAM
説明:この例では、最初のパラメータが「/DEBUG」であるかどうかを確認します。この場合、メッセージが発行され、パラメーターはスキップされます。
の
`SHIFT`コマンドは、可変数のパラメーターを処理する必要があるバッチ スクリプトで特に便利です。ご了承ください
`SHIFT`パラメータリストの内容を移動し、パラメータの位置を再割り当てします。したがって、重要なことは
`SHIFT`バッチ スクリプトのロジックに従って賢明に使用してください。
"SHIFT" Microsoft Windows ヘルプからの抜粋
Microsoft Windows [Version 10.0.19045.3693]
(c) Copyright 1985-2023 Microsoft Corp.
C:\\WINNT>
バッチ ファイル中の置き換え可能なパラメータの位置を変更します。
SHIFT [/n]
コマンド拡張機能を有効にすると、SHIFT コマンドは、/n スイッチをサポート
するようになります。このスイッチを指定すると、コマンドはシフトを n 番
目の引数から開始します。n は、0 から 8 までの数です。たとえば、
SHIFT /2
は、%3 を %2に、%4 を %3 にシフトし、%0 と %1 はシフトしません。
重要な情報、"SHIFT" コマンドのヒント
を使用するときは、
`SHIFT`バッチ スクリプトでコマンドを使用する場合は、考慮すべき重要な側面がいくつかあります。
1.
パラメータ損失: `SHIFT`これにより、パラメータ リスト内のパラメータの位置が左に移動します。これは、最初のパラメータの値 (
`%1`) 2 番目のパラメータ (
`%2`) が置き換えられると、2 番目のパラメータが 3 番目のパラメータ (
`%3`)など。最後のパラメータの値 (
`%9`) が失われ、 の値が失われます。
`%0`(スクリプト名) は変更されません。
2.
シフト数:`SHIFT`数値パラメーターが 9 つしかないため、バッチ スクリプトでは 9 回だけ実行されます (
`%0`それまで
`%9`) を与えます。9 番目のシフトの後、9 番目のパラメータの値は失われたままになります。
3.
ループ内の SHIFT:`SHIFT`ループ内では、他にパラメーターがない場合に無限ループが発生するのを避けるために、条件が適切にチェックされていることを確認する必要があります。
@ECHO OFF
:LOOP
IF "%1"=="" GOTO END_LOOP
ECHO Parameter: %1
SHIFT
GOTO LOOP
:END_LOOP
4.
ネストされたループでのSHIFT:`SHIFT`ネストされたループでは、ループ内でパラメータを移動すると、ネストされたループ内のパラメータの位置にも影響することに注意してください。
@ECHO OFF
:OUTER_LOOP
IF "%1"=="" GOTO END_OUTER
ECHO Outer Parameter: %1
SHIFT
:INNER_LOOP
IF "%1"=="" GOTO END_INNER
ECHO Inner Parameter: %1
SHIFT
GOTO INNER_LOOP
:END_INNER
GOTO OUTER_LOOP
:END_OUTER
5.
遅延拡張とシフト: `SHIFT`遅延拡張と組み合わせて (
`ENABLEDELAYEDEXPANSION`)、 ご了承ください
`!`遅延拡張には使用されません
`%`。
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
SET COUNT=0
:LOOP
IF "!1"=="" GOTO END_LOOP
SET /A COUNT+=1
SHIFT
GOTO LOOP
:END_LOOP
ECHO の数 Parameter: %COUNT%
順序と頻度を考慮することが重要です
`SHIFT`パラメータが期待どおりに移動され、情報が失われないように慎重に計画してください。空のパラメータもチェックします (
`IF "%1"==""`) 無限ループを避けるために重要です。