2012-02-22 37 views
7

tôi đang cố gắng để tạo ra một chuỗi hàng loạt như thế này: > abcd_hàng loạt String nối

Tôi có một biến gọi là soeid, với giá trị là abcd. Vì vậy, đây là những gì tôi đang làm, nhưng nó không hoạt động.

set soeid=abcd 

set "val1=>" 
set "val2=_" 
set "str=%val1%%soeid%%val2%" 

echo %str% 
+5

Điều đầu tiên bạn nên nhập sau "không hoạt động" là giải thích về * cách * nó không hoạt động. Chúng tôi không thể đọc được suy nghĩ của bạn hoặc xem màn hình của bạn từ đây; tất cả những gì chúng tôi phải tiếp tục là những gì bạn cho chúng tôi biết trong câu hỏi của bạn. Nếu bạn muốn được giúp đỡ, bạn cần phải cho chúng tôi biết bạn đang gặp phải vấn đề gì và cách bạn thử không hoạt động. –

Trả lời

11

Tôi chắc rằng nó hoạt động tốt. Để chứng minh điều đó, hãy thêm SET STR sau khi bạn xác định giá trị và bạn sẽ thấy giá trị chính xác.

Sự cố bạn đang gặp phải là khi bạn cố gắng lặp lại giá trị, dòng đang thực hiện trở thành: echo >abcd_. Các > không được trích dẫn hoặc thoát, vì vậy nó chỉ đơn giản là lấy ouput của ECHO không có đối số và chuyển hướng nó đến một tập tin có tên là "abcd_"

Nếu bạn không thấy dấu ngoặc kép, sau đó thay đổi dòng của bạn thành echo "%str%" và nó sẽ hoạt động.

Các tùy chọn khác là để kích hoạt và sử dụng mở rộng chậm (Tôi giả định này là một mã kịch bản hàng loạt, và không thực hiện trên dòng lệnh)

setlocal enableDelayedExpansion 
set soeid=abcd 

set "val1=>" 
set "val2=_" 
set "str=%val1%%soeid%%val2%" 

echo !str! 

Bình thường %var% mở rộng diễn ra từ rất sớm trong khi người phiên dịch đang phân tích cú pháp dòng. Trì hoãn !var! mở rộng xảy ra ở cuối ngay trước khi nó được thực hiện. Chuyển hướng được phát hiện ở đâu đó ở giữa. Đó là lý do tại sao việc mở rộng bình thường không hoạt động - trình thông dịch nhìn thấy ký tự được mở rộng > và diễn giải nó như là toán tử chuyển hướng đầu ra. Việc mở rộng chậm trễ ẩn các ký tự > từ thông dịch viên cho đến khi sau khi chuyển hướng được phân tích cú pháp.

Để biết thêm thông tin về việc mở rộng trễ, hãy nhập SET /? từ dòng lệnh và đọc bắt đầu với đoạn bắt đầu bằng "Cuối cùng, hỗ trợ cho việc mở rộng biến môi trường trễ ...".

+0

Cảm ơn rất nhiều nó đã làm việc tốt ngay bây giờ. Vấn đề là tôi đã sử dụng echo% str% thay vì! Str !. Xin bạn có thể giải thích cho tôi sự khác biệt giữa hai người. – NewQueries

+0

@ NewQueries- Tôi đã mở rộng câu trả lời của mình bằng cách giải thích – dbenham