@echo off
setlocal enabledelayedexpansion
set ctr=0
for /f "delims= tokens=* eol=" %%a in (op3.txt) do (
set c=%%a
set /a ctr=ctr+1
if !ctr! leq 12 (
for /l %%b in (1,1,6) do (
if !ctr!==%%b echo !c!>>op3n.txt
)
for /l %%b in (7,1,12) do (
if !ctr!==%%b break
)
) else (
break
)
if !ctr! gtr 12 (
for /l %%b in (13,1,14) do (
if !ctr!==%%b echo !c!>>op3n.txt
)
if !ctr!==15 echo ^6^2>>op3n.txt
if !ctr!==16 echo ^1>>op3n.txt
for /l %%b in (17,1,20) do (
if !ctr!==%%b echo !c!>>op3n.txt
)
for /l %%b in (23,1,26) do (
if !ctr!==%%b echo !c!>>op3n.txt
)
) else (
break
)
)
:final
echo ^0>>op3n.txt
echo EOF>>op3n.txt
把这个bat放在op3.txt旁运行,多出来的op3n.txt就是修改好的。(适用于所有的txt)
追问你的结果是:
而我想要的下面的结果:
能否把你的代码再改进一下,以达到我要的效果。
追答我的代码在我的电脑上测试成功,我的系统是WIN7,你是想要把1-2行也去掉吧。
@echo off
setlocal enabledelayedexpansion
set ctr=0
rem "delims= tokens=* eol=" 指的是以回车符为分隔符(delims=),取所有的文本内容(tokens=*),不忽略任何行(eol=),如果还是不行就在"delims= tokens=* eol="中加一个usebackq就像这样:"delims= tokens=* usebackq eol="
for /f "delims= tokens=* eol=" %%a in (op3.txt) do (
set c=%%a
set /a ctr=ctr+1
if !ctr! leq 12 (
for /l %%b in (3,1,6) do (
if !ctr!==%%b echo !c!>>opEnd.txt
)
) else (
break
)
if !ctr! gtr 12 (
for /l %%b in (13,1,14) do (
if !ctr!==%%b echo !c!opEnd.txt
)
if !ctr!==15 echo ^6^2opEnd.txt
if !ctr!==16 echo ^1>>opEnd.txt
for /l %%b in (17,1,20) do (
if !ctr!==%%b echo !c!>>opEnd.txt
)
for /l %%b in (23,1,26) do (
if !ctr!==%%b echo !c!>>opEnd.txt
)
) else (
break
)
)