5

我想制作一个从用户输入运行 jar X 次的批处理文件。我一直在寻找如何处理用户输入,但我并不完全确定。在这个循环中,我想增加发送到 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 forfor /?从命令行),那么您将看到执行 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 回答