2013-07-19 77 views
22

我對Unix shell腳本很熟悉,但是對於windows腳本來說很陌生。如何連接windows批處理文件中的字符串以進行循環?

我有一個包含str1,str2,str3 ... str10的字符串列表。我想這樣做:

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

我發現一些線程描述如何連接批處理文件中的字符串。但它以某種方式不適用於循環。所以我仍然對批處理語法感到困惑。

+0

[如何將變量與字符串或變量連接成批處理文件]可能的重複(http://stackoverflow.com/questions/9349027/how-to-concatenate-variable-with-string-or-variable-in-batch-文件) – jeb

回答

21

在批處理,你可以做這樣的:

@echo off 

setlocal EnableDelayedExpansion 

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

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

如果你不這樣做需要循環中其他地方的變量!var!,您可以簡化爲

@echo off 

setlocal 

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

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

然而,像CB我寧願PowerShell中,如果在所有可能的:

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

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

同樣,如果你不需要$var其他地方的循環,這可能被簡化:

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

試試這個,用繩子:

set "var=string1string2string3" 

,並用字符串變量:

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

提示:小心之間沒有空格var and = – Monir

+0

@Monir你剛剛救了我的生命先生,好好看! – Clocker

相關問題