画面全体に最大 9 個のパラメーターを表示しようとしています。その後、次の行ごとにパラメーターが 1 つ少なくなるまで表示します。
私はこれを試しました:
@echo off
echo %*
shift
echo %*
shift
echo %*
実結果:
a b c d e f
a b c d e f
期待される結果:
A B C D E F
B C D E F
C D E F
D E F
E F
F
何か助けはありますか?
ありがとう。
画面全体に最大 9 個のパラメーターを表示しようとしています。その後、次の行ごとにパラメーターが 1 つ少なくなるまで表示します。
私はこれを試しました:
@echo off
echo %*
shift
echo %*
shift
echo %*
実結果:
a b c d e f
a b c d e f
期待される結果:
A B C D E F
B C D E F
C D E F
D E F
E F
F
何か助けはありますか?
ありがとう。
Shift は実際の順序を変更せず、引数へのインデックス/ポインターのみを変更します。
これを試して:
@echo off
echo %1
shift
echo %1
shift
echo %1
echo %*
そして、あなたはこれを得る:
a
b
c
a b c d
「Shift は %* バッチ パラメータに影響しません」
ソース: http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/percent.mspx?mfr=true
コードをループなどに変更することをお勧めします
は%*
、コマンド ラインからのすべての引数を常に出力します ( を除く%0
)。SHIFT コマンドは無視されます。
位置によってすべての引数を明示的にエコーする必要があります。%1 %2 %3...
@echo off
:loop
if "%~1" neq "" (
echo %1 %2 %3 %4 %5 %6 %7 %8 %9
shift
goto :loop
)