windows系统使用bat文件修改指定行的文件内容

思路:

  1. 设置环境延迟变量扩展
  2. 定义替换内容(带行号,因为需要将空行也复原,若不以行号输出,会导致数据换行格式消失)
  3. 输出带行号的文本文件temp.txt
  4. 处理掉行号输出new_A.txt
  5. 移除源文件中间文件,以及重命名new_A.txt为原始文件名,还原num
  6. 注意:请事先备份,此脚本内容存在未更改的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.htmicon-default.png?t=N6B9https://www.jb51.net/article/29323.htm

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值