0

script.bat引数を呼び出すときに入力引数を処理しようとしています。引数がない場合、受信側のscript.batは、ユーザーに値を割り当てるように求めるプロンプトを表示します。しかし、今はscript.bat numberを実行しても、とにかくプロンプトが表示されます...理由はわかりません。

コード:

:Loop
IF "%1"=="" GOTO Prompt
  set VAR=%1
SHIFT
GOTO Loop
:Prompt
  set /p VAR="Check which value? "
  GOTO Continue
:Continue
4

3 に答える 3

0

:Prompt引数が正しく指定されている場合はスキップする必要があります。

:Loop
IF "%1"=="" GOTO Prompt
  SET VAR=%1
  GOTO Continue
SHIFT
GOTO Loop
:Prompt
  set /p VAR="Check which value? "
  GOTO Continue
:Continue

SHIFT実際には、 and GOTO Loop;を削除できるようになりました。@dbenham が下のコメントに投稿したように、これは到達不能なコードです。:Loopまた、これは使用されないため、それ自体も削除されます。これにより、次のようになります。

IF "%1"=="" GOTO Prompt
  SET VAR=%1
  GOTO Continue
:Prompt
  set /p VAR="Check which value? "
  GOTO Continue
:Continue
于 2012-12-04T21:50:48.637 に答える
0

%1 が設定されている場合、続行ラベルに移動する必要があります。

于 2012-12-04T21:42:43.197 に答える
0

受け入れられている Ken White ソリューションは機能しますが、大幅に単純化できます。

set "VAR=%~1"
if not defined VAR set /p "VAR=Check which value? "

<Enter>ユーザーは何も入力せずに単に押すことができます。値の入力を強制するために GOTO ループを導入できます。

set "VAR=%~1"
:loop
if not defined VAR set /p "VAR=Check which value? "&goto :loop
于 2012-12-04T22:56:57.023 に答える