2013-02-28 39 views
7

Tôi đang viết một tập lệnh Batch sẽ chạy trên một thư mục. Tôi muốn để có thể thêm một lá cờ (chẳng hạn như -r hoặc/r hoặc một cái gì đó như thế) mà sẽ làm cho kịch bản chạy cây thư mục thay vì thư mục duy nhất. Có thể thêm tùy chọn cờ bằng cách sử dụng hàng loạt không?Thêm cờ vào tập lệnh theo lô

Cảm ơn

+1

nền tảng xin vui lòng? – user1428716

+0

[tham số dòng lệnh] (http://www.robvanderwoude.com/parameters.php). Bạn có bận tâm [Googling this] (http://goo.gl/e6Kc9) không? – rojo

+1

có thể trùng lặp của [Phân tích đối số tùy chọn tệp Windows Bat] (http://stackoverflow.com/questions/3973824/windows-bat-file-optional-argument-parsing) –

Trả lời

12

Chắc chắn điều đó là có thể. thông số dòng lệnh được thông qua vào tập tin thực thi của bạn như là% 1% 2, vv (% 0 là tên của tập tin batch.)

IF "%1"=="/r" ECHO You passed the /r flag. 

Sử dụng SHIFT để thả các đối số đầu tiên và di chuyển tất cả những người khác hơn một. Bạn có thể sử dụng nó để có được một chút fancier nếu bạn muốn cho phép/r là bất cứ nơi nào trong dòng lệnh. Ví dụ:

:processargs 
SET ARG=%1 
IF DEFINED ARG (
    IF "%ARG%"=="/r" ECHO You passed the /r flag. 
    SHIFT 
    GOTO processargs 
) 

Hoặc sử dụng %* (mà mở rộng cho toàn bộ danh sách đối số) trong một vòng lặp FOR như thế này:

FOR %%A IN (%*) DO (
    IF "%%A"=="/r" ECHO You passed the /r flag. 
) 
+2

Bạn cũng có thể xử lý các đối số dưới dạng '% *' bằng một vòng lặp 'for'. [Ví dụ] (http://stackoverflow.com/a/15002975/1683264) – rojo

+0

Điểm tốt @rojo. Tôi đã cập nhật câu trả lời của mình. –

+0

Tại sao 'SET ARG =% 1',' IF ARG được xác định 'thay vì 'IF NOT'% 1 '==' ''? – Sinjai

Các vấn đề liên quan