BAT批处理对文本指定行的删除与添加
因为某些数据被导出为html文件,用于内部浏览查看,所以无法对<head>等标签设置,只能手动处理。但因内容繁复又是每天必做内容,所以使用了批处理来操作。但中间出现了多次语句问题或down下来的例子与情况不符,进行了很多修改。
一、开始
① 修改好文件后需要上传至web服务端使用,因此本地处理文件完成后就删除,选择使用:
首先开启变量延迟(即允许先运行后边的变量赋值运算后再从命令前面部分导入使用),判断文件是否存在,如果存在xxx,即跳转至xxx。
② 公司涉及两个部门,有两个不同命名文件,因此使用手书变量:
设置x变量为随机数,为防纯数字应用时有错误,在前面加入#号分别。并且每次变量语句前都要使用。
二、过程
① 删除指定行
一、开始
① 修改好文件后需要上传至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 参数为忽略大小写,这里因为纯数字没有作用。
/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,即从文中删除第五行之意。如删除多行,因初学,可以直接多运行几遍。。。
② 插入新行,并添加新内容
显示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命令。
注意此处:必须关闭回显@echo off ,因在测试时开启了回显从而报错,还以为语句有问题,差点错过去。
此处意为:从test.html中第九行开始,追加新文本内容:
</HEAD>
<BODY>
到Shuai.html中,每个标签一行。又因<>符号在批处理命令中属于管道命令,因此用^符号作转义字符来正确输入。
③ 复制
copy /y xxx xxx
这个很好理解,复制到web服务端,默认替换无提示。如果共享不稳定,可以设置磁盘映射来解决。
三、结束
del /F /Q
删除操作目录文件,以配合开头的 if exist命令。