2011-12-22 32 views

Trả lời

92

Tôi không biết gì về Jenkins, nhưng có vẻ như bạn đang cố gắng truy cập các biến môi trường bằng cách sử dụng một số dạng cú pháp Unix - điều đó sẽ không hoạt động.

Nếu tên của biến là WORKSPACE, khi đó giá trị được mở rộng trong lô Windows sử dụng
%WORKSPACE%. Đó là hình thức mở rộng được thực hiện tại thời gian phân tích cú pháp. Ví dụ, điều này sẽ in ra màn hình giá trị của không gian làm việc

echo %WORKSPACE% 

Nếu bạn cần giá trị tại thời gian thực hiện, sau đó bạn cần phải sử dụng chậm mở rộng !WORKSPACE!. Trì hoãn trễ không được kích hoạt bình thường theo mặc định. Sử dụng SETLOCAL EnableDelayedExpansion để bật tính năng này. Việc mở rộng trễ thường là cần thiết vì các khối mã trong ngoặc đơn được phân tích cú pháp cùng một lúc, vì vậy giá trị được gán trong khối không thể đọc sau trong cùng một khối trừ khi bạn sử dụng mở rộng trễ.

setlocal enableDelayedExpansion 
set WORKSPACE=BEFORE 
(
    set WORKSPACE=AFTER 
    echo Normal Expansion = %WORKSPACE% 
    echo Delayed Expansion = !WORKSPACE! 
) 

Đầu ra của trên là

Normal Expansion = BEFORE 
Delayed Expansion = AFTER 

Sử dụng HELP SET hoặc SET /? từ dòng lệnh để lấy thêm thông tin về các biến môi trường Windows và các tùy chọn mở rộng khác nhau. Ví dụ, nó giải thích cách thực hiện các thao tác tìm kiếm/thay thế và chuỗi con.

+1

Tôi hoàn toàn quên mất rằng ít chi tiết cầu kỳ nit về cửa sổ. Cảm ơn ! – JoxTraex

+0

đã lãng phí rất nhiều thời gian cho cảm ơn này –

+0

@UtsavGupta Tôi cũng bị mắc kẹt về vấn đề này. Tôi đã sử dụng $ BUILD_ID trước đó. Bây giờ vui với% BUILD_ID% trên cửa sổ. –

20

Trong cửa sổ bạn nên sử dụng %WORKSPACE%.

+0

Bạn có nghĩa là tập tin theo lô ... – manojlds

+5

Có. Và trong trường "Build/Command/Execute Windows batch" của Hudson. –

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