2013-07-19 42 views
22

Tôi quen thuộc với kịch bản lệnh shell Unix, nhưng mới với kịch bản cửa sổ.Làm thế nào để nối chuỗi trong tập tin batch windows cho vòng lặp?

Tôi có danh sách các chuỗi chứa str1, str2, str3 ... str10. Tôi muốn làm như sau:

for string in string_list 
do 
    var = string+"xyz" 
    svn co var 
end 

Tôi tìm thấy một số chuỗi mô tả cách ghép chuỗi trong tập tin thực thi. Nhưng nó bằng cách nào đó không hoạt động trong vòng lặp. Vì vậy, tôi vẫn còn khó hiểu về cú pháp lô.

+0

có thể trùng lặp của [Làm thế nào để nối biến với chuỗi hoặc biến trong tập tin thực thi] (http://stackoverflow.com/questions/9349027/how-to-concatenate-variable-with-string-or-variable-in-batch- file) – jeb

Trả lời

21

Trong đợt bạn có thể làm điều đó như thế này:

@echo off 

setlocal EnableDelayedExpansion 

set "string_list=str1 str2 str3 ... str10" 

for %%s in (%string_list%) do (
    set "var=%%sxyz" 
    svn co "!var!" 
) 

Nếu bạn không cần biến số !var! ở nơi khác trong vòng lặp, bạn có thể đơn giản hóa điều đó thành

@echo off 

setlocal 

set "string_list=str1 str2 str3 ... str10" 

for %%s in (%string_list%) do svn co "%%sxyz" 

Tuy nhiên, giống như CB Tôi muốn PowerShell nếu có thể:

$string_list = 'str1', 'str2', 'str3', ... 'str10' 

$string_list | % { 
    $var = "${_}xyz" # alternatively: $var = $_ + 'xyz' 
    svn co $var 
} 

Một lần nữa, điều này có thể được đơn giản hóa nếu bạn không cần $var ở đâu đó trong vòng lặp:

$string_list = 'str1', 'str2', 'str3', ... 'str10' 
$string_list | % { svn co "${_}xyz" } 
21

Hãy thử điều này, với chuỗi:

set "var=string1string2string3" 

và với các biến chuỗi:

set "var=%string1%%string2%%string3%" 
+8

Gợi ý: cẩn thận về KHÔNG gian giữa var và = – Monir

+0

@Monir bạn vừa cứu cuộc sống của tôi, thưa bạn, tốt lắm! – Clocker

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