这段代码会丢失分号开始的行,以及丢失感叹号...... 等问题, 大概实际文本不存在此问题
第一个问题给个思路
既然 [Components] 原本就是单独一行,可以在do 后每行先照原样输出,然后判断是否这一行有
[Components] ,有就增加新行 判断类似
if not "!aa:[Components]=!"=="!aa!" echo 新行内容,,,
如果真的是一行的部分字符要替换成几行请再追问
第二个问题 在修改文本的代码之前
find /i "iis=iis2.dll,OcEntry,iis2.inf,,7" "c:\windows\sysoc.inf">nul&&exit
如果想换行,还得再用一个for语句。例如:
for /f "delims=]" %%b in (!aa!) do (echo %%b] >> ...your.inf
echo %%c >> ...your.inf)
至于检测文件里是否存在某个字符串,可以用:find 或findstr 再配合errorlevel环境变量。
find /i "iis=iis2.dll,OcEntry,iis2.inf,,7" sysoc.inf
if %errorlevel%==1 goto modify_file
echo. >> 目标文件。
就是换行了