我正在通过Batch操作一些HTML,但即使我setlocal enableDelayedExpansion
,它仍然不会传输标签。这是我的剧本:
@echo off
setlocal enableDelayedExpansion
del output.html
for /f "delims=" %%x in (file.html) do call :putLineInHTMLFile %%x
:putLineInHTMLFile
echo !%*!>> output.html
file.html包含:
<tag 1>
<tag 2>
运行脚本后,output.html包含:
ECHO is off.
P.S。:我想继续使用do call
所以我对能够在不删除do call
声明的情况下完成这项工作的答案感兴趣。
答案 0 :(得分:1)
@echo off
setlocal enableDelayedExpansion
del output.html
for /f "delims=" %%x in (file.html) do (echo %%x>> output.html)
编辑:这是使用do call
@echo off
setlocal enabledelayedexpansion
del output.html
for /f "delims=" %%x in (file.html) do (set Blog="%%x"& call :DoIt)
goto :End
:DoIt
echo %Blog%>>output.html
:End
重新编辑:修复了我的第二个@Aacini回答。他的回答让我意识到%%x
需要被"
包围,而不是无用地分配给另一个var。
@echo off
setlocal enabledelayedexpansion
del output.html
for /f "delims=" %%x in (file.html) do (call :DoIt "%%x")
goto :End
:DoIt
echo %1>>output.html
:End
答案 1 :(得分:1)
@echo off
setlocal enableDelayedExpansion
del output.html
for /f "delims=" %%x in (file.html) do call :putLineInHTMLFile "%%x"
goto :EOF
:putLineInHTMLFile
set "line=%~1"
echo !line!>> output.html