2012-12-09 19 views
5

Id muốn tạo một tệp lô chạy một lượng thời gian jar X từ đầu vào của người dùng. Tôi đã tìm cách để xử lý đầu vào của người dùng, nhưng tôi không hoàn toàn chắc chắn. Trong vòng lặp này, tôi muốn tăng các tham số mà tôi đang gửi đến bình.Tệp lôgic Windows để chạy tệp jar nhiều lần

Tính đến bây giờ, tôi không biết

  • thao tác các biến trong vòng lặp for, numParam, strParam

Vì vậy, khi tôi chạy file bat chút này từ dòng lệnh, tôi nhận là có khả năng làm đầu vào người sử dụng, nhưng một khi nó được cho là vòng lặp for, nó spits ra "cú pháp của lệnh là không chính xác

cho đến nay tôi đã sau

@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 

Bất kỳ đề nghị sẽ là hữu ích

Edit: Với sự thay đổi gần đây, nó không có vẻ để chạy file jar của tôi. hoặc ít nhất dường như không chạy chương trình echo thử nghiệm của tôi. Có vẻ như biến đầu vào của người dùng của tôi không được đặt thành những gì tôi đã nhập, nó vẫn ở 0

Trả lời

1

gì đã xảy ra là vì vấn đề cuối cùng của tôi là một cái gì đó với thế biến được mở rộng. Đây là thực sự trả lời tại dreamincode.net: Here

mã cuối cùng:

@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 
3

Nếu bạn đọc tài liệu (loại help for hoặc for /? từ dòng lệnh) thì bạn sẽ thấy cú pháp chính xác để thực thi FOR vòng lặp một số lần cố định.

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

Nếu bạn muốn sử dụng nhiều dòng, sau đó bạn phải dòng sử dụng tiếp tục

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

hoặc ngoặc

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 
) 
+0

tôi đã đọc sự giúp đỡ cho các vòng lặp for và tôi đã cố gắng để tái tạo đầu tiên được cung cấp. Cảm ơn bạn đã trả lời. Điều này chắc chắn giúp với vấn đề vòng lặp for – Vnge