【问题标题】:How to concatenate strings in windows batch file for loop?如何在Windows批处理文件中连接字符串以进行循环?
【发布时间】:2013-07-19 10:21:22
【问题描述】:

我熟悉 Unix shell 脚本,但不熟悉 Windows 脚本。

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

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

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

【问题讨论】:

标签: windows batch-file


【解决方案1】:

用字符串试试这个:

set "var=string1string2string3"

和字符串变量:

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

【讨论】:

  • 提示:注意 var 和 = 之间没有空格
  • 把字符串和字符串变量混合起来怎么样?
【解决方案2】:

你可以这样做:

@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"

但是,像 C.B. 一样,如果可能的话,我更喜欢 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" }

【讨论】:

    【解决方案3】:

    一个非常简单的例子:

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

    结果应该是:

    Hello World!
    

    【讨论】:

    • 如果您添加或多或少重复的答案,它至少应该可以工作(它没有,输出是!
    • 请尝试通过 cmd 运行,而不是 power shell。
    • 问题是关于在循环中连接字符串。您的答案不适用于循环?因此,答案与原始问题无关。
    猜你喜欢
    • 2017-11-14
    • 1970-01-01
    • 2010-11-24
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多