我正在尝试读取文件并从每行中删除正斜杠字符(/)。这就是我所拥有的:
for /F "tokens=*" %%A in (%BRANCH_OUT%) do SET THIS_BRANCH=%%A && ECHO %THIS_BRANCH:/=%
效果很好,但echo只显示文件中每行的最后一行。所以,文件包含:
方向1 /
Dir2中/
DIR3 /
将被读取并输出为
DIR3
DIR3
DIR3
有关如何解决此问题的任何建议?
答案 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!
表示法来获得延迟扩展。