@echo off
set file=test.inf
set str=[AddReg]
for /f %%i in ('more "%file%"') do (
echo %%i >>temp.txt
if "%%i"=="%str%" echo 此处为插入的数据>>temp.txt
)
[Version] Version_1 Version_2 Version_3 [AddReg] AddReg_1-1 AddReg_1-2 AddReg_1-3 [DelReg] DelReg_1 DelReg_2 DelReg_3 [AddReg] AddReg_2-1 AddReg_2-2 AddReg_2-3 [AddReg] AddReg_3-1 AddReg_3-2 AddReg_3-3 [Strings] Strings_1 Strings_2 Strings_3小节名[AddReg]共出现三处,如何在第一个[AddReg]下面插入一行AddReg_1-0使第一个小节内容变成如下情况,而其他的[AddReg]重复小节下面无变化?
[AddReg] AddReg_1-0 AddReg_1-1 AddReg_1-2 AddReg_1-3[ Last edited by suntb on 2008-3-8 at 02:16 PM ]
Originally posted by terse at 2008-3-8 15:35: 简化一下 另编码问题 加more @echo off for /f "delims=" %%i in ('more test.inf') do ( >>temp.txt echo %%i if "%%i"=="[AddReg]" if not defined %%i s ...谢谢 代码测试可行 if not defined 以前没接触过 整理了下两种插入数据方式
::在指定数据行后插入一行数据
@echo off
set file=test.inf
set tmpf=temp.txt
set str=[AddReg]
set addstr=此处为插入的数据
:menu
echo.&echo 在每个符合条件的数据行后都插入新数据请按 Y
echo.&set /p add=只在第一个符合条件的行后插入数据请按 N
if /i %add%==Y goto :Y
if /i %add%==N (goto :N) else (goto :error)
:Y
for /f %%i in ('more "%file%"') do (
echo %%i >>%tmpf%
if "%%i"=="%str%" echo %addstr%>>%tmpf%
)
goto :EOF
:N
for /f "delims=" %%i in ('more "%file%"') do (
>>%tmpf% echo %%i
if "%%i"=="%str%" if not defined %%i set %%i=a &>>%tmpf% echo %addstr%
)
goto :EOF
:error
cls
echo.&echo 你的选择有误请重新按键
goto :menu
@echo off&setlocal EnableDelayedExpansion
set file=test.inf
set tmpf=temp.txt
set str=[AddReg]
set addstr=此处为插入的数据
set a=0
for /f %%i in ('more "%file%"') do (
echo %%i >>%tmpf%
if "!a!"=="0" (
if "%%i"=="%str%" (
echo %addstr%>>%tmpf%
set a=1
)
)
)