14

画面全体に最大 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

何か助けはありますか?

ありがとう。

4

4 に答える 4

9

Shift は実際の順序を変更せず、引数へのインデックス/ポインターのみを変更します。

これを試して:

@echo off
echo %1
shift 
echo %1
shift
echo %1
echo %*

そして、あなたはこれを得る:

a
b
c
a b c d
于 2013-04-08T17:38:41.797 に答える
4

「Shift は %* バッチ パラメータに影響しません」

ソース: http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/percent.mspx?mfr=true

コードをループなどに変更することをお勧めします

于 2013-04-08T17:38:20.433 に答える
3

%*、コマンド ラインからのすべての引数を常に出力します ( を除く%0)。SHIFT コマンドは無視されます。

位置によってすべての引数を明示的にエコーする必要があります。%1 %2 %3...

@echo off
:loop
if "%~1" neq "" (
  echo %1 %2 %3 %4 %5 %6 %7 %8 %9
  shift
  goto :loop
)
于 2013-04-08T17:41:21.010 に答える