web-dev-qa-db-fra.com

Comment concaténer des chaînes dans un fichier batch Windows pour une boucle?

Je connais bien les scripts Unix Shell, mais je ne connais pas encore les scripts Windows.

J'ai une liste de chaînes contenant str1, str2, str3 ... str10. Je veux faire comme ça:

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

J'ai trouvé un fil décrivant comment concaténer une chaîne dans un fichier batch. Mais cela ne fonctionne pas dans la boucle. Donc, je suis toujours déroutant au sujet de la syntaxe de lot.

34
Marcus Thornton

En lot, vous pouvez le faire comme ceci:

@echo off

setlocal EnableDelayedExpansion

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

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

Si vous n'avez pas besoin de la variable !var! ailleurs dans la boucle, vous pourriez simplifier cela

@echo off

setlocal

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

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

Cependant, comme CB, je préférerais PowerShell dans la mesure du possible:

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

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

Encore une fois, cela pourrait être simplifié si vous n’avez pas besoin de $var ailleurs dans la boucle:

$string_list = 'str1', 'str2', 'str3', ... 'str10'
$string_list | ForEach-Object { svn co "${_}xyz" }
35
Ansgar Wiechers

Essayez ceci, avec des chaînes:

set "var=string1string2string3"

et avec des variables de chaîne:

set "var=%string1%%string2%%string3%"
37
Endoro