@echo off & setlocal enabledelayedexpansion
cd .>#
for /f "tokens=1* delims=" %%a in ('findstr/n .* 1.txt') do (
if %%a equ 6 (
set "line=%%a"
echo !line:~0,3! >>#
goto :next
)
else echo.%%a >>#
)
:next
type 2.txt >>#
move # 1.txt
追问经测试,这段代码可以替换到1.txt,但是原本1.txt所有的内容都没了,有没有只替换第6行的第4个字符(含)后面的字符的方法?
追答@echo off & setlocal enabledelayedexpansion
cd .>#
for /f "tokens=1* delims=:" %%a in ('findstr/n .* 1.txt') do (
if %%a equ 6 (
set "line=%%b"
echo !line:~0,3! >>#
goto :next
) else echo.%%b >>#
)
:next
type 2.txt >>#
move # 1.txt
追问按照上面的代码又重新测试了,结果是1.txt的内容保留了,只有第6行第4字符后面的字符删除了,而2.txt的内容添加到了1.txt的第7行里面了,有没有办法直接在第6行第4字符后面直接替换?
追答@echo off & setlocal enabledelayedexpansion
cd .>#
for /f "tokens=1* delims=:" %%a in ('findstr/n .* 1.txt') do (
if %%a equ 6 (
set "line=%%b"
set /p "s=!line:~0,3!" < nul >>#
goto :next
) else echo.%%b >>#
)
:next
type 2.txt >>#
move # 1.txt
本回答被提问者和网友采纳