55

我熟悉 Unix shell 脚本,但对 windows 脚本很陌生。

我有一个包含 str1、str2、str3...str10 的字符串列表。我想这样做:

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

我确实找到了一些描述如何在批处理文件中连接字符串的线程。但它不知何故在 for 循环中不起作用。所以我仍然对批处理语法感到困惑。

4

3 回答 3

51

试试这个,用字符串:

set "var=string1string2string3"

并使用字符串变量:

set "var=%string1%%string2%%string3%"
于 2013-07-19T10:30:13.123 回答
46

批量你可以这样做:

@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 | ForEach-Object {
  $var = "${_}xyz"   # alternatively: $var = $_ + 'xyz'
  svn co $var
}

同样,如果您不需要$var循环中的其他地方,这可以简化:

$string_list = 'str1', 'str2', 'str3', ... 'str10'
$string_list | ForEach-Object { svn co "${_}xyz" }
于 2013-07-19T11:48:36.360 回答
11

一个非常简单的例子:

SET a=Hello
SET b=World
SET c=%a% %b%!
echo %c%

结果应该是:

Hello World!
于 2020-02-18T13:42:31.057 回答