在BATCH

时间:2015-12-02 20:47:51

标签: string batch-file search replace

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

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

我想给脚本一个参数,该脚本在单词的任何地方都包含一个通配符,脚本会检测它并用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

你能帮帮我吗?

2 个答案:

答案 0 :(得分:1)

你正在覆盖string而它会丢失?

将结果改为新变量。

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

答案 1 :(得分:1)

每次尝试重新初始化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!
)