思路:
- 设置环境延迟变量扩展
- 定义替换内容(带行号,因为需要将空行也复原,若不以行号输出,会导致数据换行格式消失)
- 输出带行号的文本文件temp.txt
- 处理掉行号输出new_A.txt
- 移除源文件中间文件,以及重命名new_A.txt为原始文件名,还原num
- 注意:请事先备份,此脚本内容存在未更改的bug,能力有限未修复,替换的源文件不能有空白字符串组成的空白行,需删除后才能正常执行
@echo off
setlocal enabledelayedexpansion
set fileName=fileName.txt
set content=4: 替换内容
for /f "delims=" %%a in ('findstr /n .* %fileName%') do (
set /a num+=1
rem 替换第四行的内容内容
if !num!==4 (echo %content%) else echo %%a
rem 将添加了行号的文本写入临时文件
)>>temp.txt
rem 将序号去除
for /f "tokens=1* delims=:" %%i in ('type temp.txt') do (
rem 按 : 分割每行字符串
set "str=%%j"
if "!str!"=="" (
rem 写入源文件里的空行
echo.>>new_A.txt
) else (
rem 将字符串写入文本,每行会多一个空格,使用字符串的截取功能去掉末尾的一个空格
echo !str!>>new_A.txt
)
)
rem 删除临时文件并将修改后的文件修改为源文件
del temp.txt&move new_A.txt%fileName%
rem 执行完脚本要将num变量取消,以免影响下次执行
set num=0
参考资料
bat脚本修改文件内容 - 算法网创建bat脚本 新建一个脚本文件 updateFileContent.bat %关闭回显,设置延迟环境变量扩展% @echo off&setlocal enabledelayedexpansion rem 计算调用的参数个数 for %%a in (%*) do set /a num+=1 if defined num (echo……http://ddrv.cn/a/783551https://www.jb51.net/article/29323.htm
https://www.jb51.net/article/29323.htm