0
如何更改下面的腳本來編輯原始文件而不是生成新文件?另外,如何讓該腳本在同一目錄中的所有.html文件上執行,而不必一次指定一個文件。批量重寫原始文件
@echo off
setlocal EnableDelayedExpansion
call :processFile <template.html> final.html
goto :EOF
:processFile
set line=EOF
set /P line=
if "!line!" == "EOF" goto :EOF
set X=
set "lineNoGen=!line:Gen_1_=$!"
if "!lineNoGen!" neq "!line!" (
for /F "tokens=1-3 delims=$" %%a in ("!lineNoGen:Gen.1.=$!") do (
set "beforeGen=%%a"
set "betweenGens=%%b"
set "afterGen=%%c"
set "X=!betweenGens:~0,1!"
set /A Xm1=X-1, Xp1=X+1
echo !beforeGen!Gen_1_!Xm1!!betweenGens:~1!Gen.1.!Xm1!!afterGen:~1!
)
)
echo !line!
if defined X (
echo !beforeGen!Gen_1_!Xp1!!betweenGens:~1!Gen.1.!Xp1!!afterGen:~1!
)
goto :processFile
這種方法將工作,但你會如何寫它與該目錄中的所有文件自動執行。 html擴展而不是「template.html」嗎? – Blainer 2012-03-20 16:05:18
使用通配符? * .html – 2012-03-20 16:18:31
會這樣工作嗎? 'call:processFile < *.html > tmp_file' 'move tmp_file * .html' – Blainer 2012-03-20 16:21:29