2011-02-02 30 views
15

Trong tập tin batch của tôi, tôi muốn chuyển nhiều tham số đến một số ứng dụng khác.Làm cách nào để chuyển nhiều tham số trong hàng loạt?

Bây giờ tôi làm điều đó

app.exe %1 %2 

và nó chỉ có thể vượt qua hai tham số, nhưng tôi muốn vượt qua tất cả các thông số được truyền cho hàng loạt (Tôi không muốn viết % 1% 2% 3 % 4 ...)

Có cách nào để làm điều đó không?

Trả lời

35

Có một cách kỳ diệu! Tôi biết điều đó, nhưng tôi không thể nhớ được.

%*

3

Bạn có thể sử dụng SHIFT vòng lặp nhanh chóng và thông qua các đối số của nó. Đây là một ví dụ minh họa, nơi bạn sẽ thay thế dấu nhắc ECHO cuối cùng bằng lời nhắc tải ứng dụng của bạn.

@ECHO OFF 

SET PARAMS= 

:_PARAMS_LOOP 

REM There is a trailing space in the next line; it is there for formatting. 
SET PARAMS=%PARAMS%%1 
ECHO %1 
SHIFT 

IF NOT "%1"=="" GOTO _PARAMS_LOOP 

ECHO %PARAMS% 

PAUSE 

Điều này có thể hữu ích nếu bạn cần một số loại thông số động hoặc nếu bạn không cho phép tham số nhất định.

+0

+1, duy nhất tôi sẽ đặt việc kiểm tra thông số rỗng * trước * xử lý tham số. –

3

Một cách khác là sử dụng một tham số được trích dẫn kép. Khi gọi ứng dụng khác, bạn chỉ cần sử dụng thiết bị %~N trên dòng lệnh để xóa dấu ngoặc kép.

Nếu một số thông số bạn định chuyển đến ứng dụng được tự trích dẫn kép, các ký tự báo giá phải được lặp lại hai lần.

Dưới đây là một kịch bản minh họa sử dụng các tham số đầu tiên là tên của ứng dụng và thứ hai như một danh sách tham số kết hợp để vượt qua các ứng dụng:

@ECHO OFF 
CALL %1 %~2 

Dưới đây là ví dụ về cách gọi kịch bản cho trường hợp khác nhau (qua một tham số hoặc một vài tham số hoặc tham số được trích dẫn).

  1. đèo 1 tham số để ứng dụng:

    C:\>mybatch.bat app.exe "app_param" 
    C:\>mybatch.bat app.exe app_param 
    
  2. đèo một vài thông số:

    C:\>mybatch.bat app.exe "app_param1 app_param2 app_param3" 
    
  3. Vượt qua một tham số trong đó bao gồm không gian (và do đó phải được trích dẫn):

    C:\>mybatch.bat app.exe """parameter with spaces""" 
    
  4. Một ví dụ kết hợp: một số thông số là với không gian, những người khác không phải là:

    C:\>mybatch.bat app.exe "param_with_no_spaces ""parameter with spaces"" another_spaceless_param" 
    
Các vấn đề liên quan