字符串替换麻烦

时间:2014-04-25 04:52:35

标签: string batch-file

我正在尝试读取文件并从每行中删除正斜杠字符(/)。这就是我所拥有的:

for /F "tokens=*" %%A in (%BRANCH_OUT%) do SET THIS_BRANCH=%%A && ECHO %THIS_BRANCH:/=%

效果很好,但echo只显示文件中每行的最后一行。所以,文件包含:

方向1 /

Dir2中/

DIR3 /

将被读取并输出为

DIR3

DIR3

DIR3

有关如何解决此问题的任何建议?

1 个答案:

答案 0 :(得分:1)

如果要在for loop中分配然后使用变量,则必须启用并使用延迟扩展。例如,给出以下内容:

c:\>@for %i in (a b c d) do @set _x=%i && @echo %_x%
d
d
d
d

这会像你观察到的那样回应 d 字符4次。如果您启用了延迟扩展并且您更改了它,则它会回显4个字母中的每一个而不是 d 4次。

c:\>@for %i in (a b c d) do @set _x=%i && @echo !_x!
a
b
c
d

因此,在批处理文件中,您需要在批处理文件的开头添加setlocal ENABLEDELAYEDEXPANSION,最后添加endlocal。这可确保您可以使用!_x!表示法来获得延迟扩展。