BAT批处理对文本指定行的删除与添加

因为某些数据被导出为html文件,用于内部浏览查看,所以无法对<head>等标签设置,只能手动处理。但因内容繁复又是每天必做内容,所以使用了批处理来操作。但中间出现了多次语句问题或down下来的例子与情况不符,进行了很多修改。

一、开始
① 修改好文件后需要上传至web服务端使用,因此本地处理文件完成后就删除,选择使用:

setlocal enabledelayedexpansion
if exist "xxx" goto xxx

首先开启变量延迟(即允许先运行后边的变量赋值运算后再从命令前面部分导入使用),判断文件是否存在,如果存在xxx,即跳转至xxx。

② 公司涉及两个部门,有两个不同命名文件,因此使用手书变量:

set /p dei=    ◆请输入选择:
if /i "%dei%"=="1" goto o1
if /i "%dei%"=="2" goto o2
exit

/i 参数为忽略大小写,这里因为纯数字没有作用。

③ 因为中间有很多变量定义,为防出错或重新引用变量导致赋值错误,因此使用随机变量名:

set x=#!random!

设置x变量为随机数,为防纯数字应用时有错误,在前面加入#号分别。并且每次变量语句前都要使用。

二、过程

① 删除指定行

for /f "tokens=*" %%i in (xxx) do (
set /a x+=1
if !x! neq 5 echo %%i>>test.html
)

显示xxx文件中除第五行之外的数据到test.html,即从文中删除第五行之意。如删除多行,因初学,可以直接多运行几遍。。。

 ② 插入新行,并添加新内容

set "f=test.html"
(for /f "tokens=1* delims=:" %%a in ('findstr /n .* "%f%"') do (
    set /a x+=1
    if !x! equ 9 (
        echo;%%b
        echo;^</HEAD^>
        echo;^<BODY^>
    ) else echo;%%b
))>Shuai.html

 注意此处:必须关闭回显@echo off ,因在测试时开启了回显从而报错,还以为语句有问题,差点错过去。
 此处意为:从test.html中第九行开始,追加新文本内容:
</HEAD>
<BODY>
 到Shuai.html中,每个标签一行。又因<>符号在批处理命令中属于管道命令,因此用^符号作转义字符来正确输入。

③ 复制

copy /y xxx xxx

这个很好理解,复制到web服务端,默认替换无提示。如果共享不稳定,可以设置磁盘映射来解决。

三、结束

del /F /Q

删除操作目录文件,以配合开头的 if exist命令。
 
posted @ 2022-10-28 08:44  帅哥在此  阅读(2554)  评论(0编辑  收藏  举报