2013-07-19 20 views
22

Jestem zaznajomiony z obsługą skryptów powłoki uniksowej, ale nowy w skryptach systemu Windows.Jak połączyć ciągi w pliku wsadowym systemu Windows dla pętli?

Mam listę ciągów zawierających str1, str2, str3 ... str10. Chcę zrobić tak:

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

Znalazłem wątek opisujący jak połączyć ciąg w pliku wsadowym. Ale jakoś nie działa w pętli for. Tak więc nadal jestem mylący co do składni partii.

+0

możliwy duplikat [Jak połączyć zmienną z ciągiem lub zmienną w pliku wsadowym] (http://stackoverflow.com/questions/9349027/how-to-concatenate-variable- with-string-lub-variable-in-batch- plik) – jeb

Odpowiedz

21

W partii można zrobić to tak:

@echo off 

setlocal EnableDelayedExpansion 

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

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

Jeśli nie potrzebuję zmiennej !var! w innym miejscu pętli, można uprościć to do

@echo off 

setlocal 

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

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

Jednak, podobnie jak CB wolałbym PowerShell, jeśli w ogóle możliwe:

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

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

Ponownie, to może być uproszczone, jeśli nie trzeba $var gdzie indziej w pętli:

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

Spróbuj tego, ze strunami:

set "var=string1string2string3" 

i zmiennych łańcuchowych:

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

Podpowiedź: uważaj na NIE MA PRZESTRZENI między var and = – Monir

+0

@ Monitujesz, że właśnie uratowałeś moje życie, dobry panie, dobry lookin! – Clocker

Powiązane problemy