5

ユーザー入力からjarX回実行するバッチファイルを作成したい。ユーザー入力の処理方法を探しましたが、完全にはわかりません。このループでは、jarに送信するパラメーターを増やしたいと思います。

今のところわかりません

  • forループ、numParam、strParamの変数を操作します

したがって、この小さなbatファイルをコマンドラインから実行すると、ユーザー入力を実行できますが、forループに到達すると、「コマンドの構文が正しくありません。

これまでのところ私は以下を持っています

@echo off

echo Welcome, this will run Lab1.jar
echo Please enter how many times to run the program
:: Set the amount of times to run from user input
set /P numToRun = prompt


set numParam = 10000
set strParam = 10000
:: Start looping here while increasing the jar pars
:: Loop from 0 to numToRun
for /L %%i in (1 1 %numToRun%) do (
    java -jar Lab1.jar %numParam% %strParam%

)
pause
@echo on

どんな提案も役に立ちます

編集: 最近の変更では、jarファイルが実行されていないようです。または、少なくとも私のテストエコープログラムを実行していないようです。ユーザー入力変数が入力したものに設定されていないようです。0のままです。

4

2 に答える 2

3

ドキュメント(タイプhelp forまたはfor /?コマンドラインから)を読むと、FORループを一定回数実行するための正しい構文がわかります。

for /L %%i in (1 1 %numToRun%) do java -jar Lab1.jar %numParam% %strParam%

複数の行を使用する場合は、行継続を使用する必要があります

for /L %%i in (1 1 %numToRun%) do ^
  java -jar Lab1.jar %numParam% %strParam%

または括弧

for /L %%i in (1 1 %numToRun%) do (
  java -jar Lab1.jar %numParam% %strParam%
  REM parentheses are more convenient for multiple commands within the loop
)
于 2012-12-09T21:33:11.423 に答える
1

私の最後の問題で起こったことは、変数がどのように拡張されたかということでした。これは実際にdreamincode.netで答えられました:ここに

最終コード:

@echo off

echo Welcome, this will run Lab1.jar
:: Set the amount of times to run from user input
set /P numToRun= Please enter how many times to run the program: 

set /a numParam = 1000
set /a strParam = 1000

setlocal enabledelayedexpansion enableextensions


:: Start looping here while increasing the jar pars
:: Loop from 0 to numToRun
for /L %%i in (1 1 %numToRun%) do (
    set /a numParam = !numParam! * 2
    set /a strParam = !strParam! * 2
    java -jar Lab1.jar !numParam! !strParam!

    :: The two lines below are used for testing
    echo %numParam%  !numParam!
    echo %strParam%  !strParam!
)

@echo on
于 2012-12-10T05:32:17.447 に答える