【问题标题】:Replace string with incremented value in BATCH用 BATCH 中的增量值替换字符串
【发布时间】:2015-12-02 20:47:50
【问题描述】:

首先我是编码新手,希望你能在这里找到一些帮助。

我正在尝试制作一个批处理脚本来解决一个简单的问题。

我想为脚本提供一个参数,该参数在单词的任何位置都包含一个通配符,脚本会检测到它并将其替换为 for 循环给出的增量值。

这是我到目前为止所拥有的,但问题是还没有增量结果。

@echo off
setlocal enabledelayedexpansion
set SEARCHTEXT=?
set string=%1

for /l %%x in (1, 1, 5) do (
    set REPLACETEXT=%%x
    call set string=%%string:!SEARCHTEXT!=!REPLACETEXT!%%
    echo !string!
)
:end

例如,如果我将其保存为“example.bat”并运行这就是我得到的

> example.bat num?

结果是……

num1
num1
num1
num1
num1

但这应该是……

num1
num2
num3
num4
num5

你能帮我吗?

【问题讨论】:

  • for /l %%x in (1, 1, 5) do echo !string:%SEARCHTEXT%=%%x!

标签: string batch-file search replace


【解决方案1】:

您正在覆盖string,它会丢失?

将结果放入一个新变量中。

for /l %%x in (1, 1, 5) do (
    set "string2=!string:%SEARCHTEXT%=%%x!"
    echo !string2!
)

【讨论】:

    【解决方案2】:

    在每次迭代时重新初始化 string 也可以:

    @echo off
    setlocal enabledelayedexpansion
    set SEARCHTEXT=?
    
    for /l %%x in (1, 1, 5) do (
        set "string=%1"
        set string=!string:%SEARCHTEXT%=%%x!
        echo !string!
    )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-20
      • 2014-06-12
      • 2020-07-09
      • 2020-07-09
      • 1970-01-01
      相关资源
      最近更新 更多