bat脚本-删除字符串前n个字符

本文介绍了一款用于批量裁剪文本数据的批处理脚本,通过简单的命令行操作即可实现对文本文件中每行数据的前n个字符的删除。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

概述

本文讲述的是对文本的内容进行数据处理,删除文本中每行字符串的前n个字符,实现数据裁剪。

背景

本人在开发的过程中,需要对一些数据进行裁剪后仿真,但是奈何数据量庞大,但是又需要经常对数据进行裁剪,所以准备写一个脚本进行数据裁剪,减少手动的工作。

需求

1、可以读取文本文件中每一行数据;
2、对文本文件中每行数据进行裁剪;

需求分析

1、读取文件文件可以使用for循环读取;
2、对文本文件中的数据进行裁剪可以使用到变量提取;

需求实现

@echo off
rem 设置输入的文本文件
set fn=test.txt
rem for循环读取文本,使用usebackq可以使文本文件名包含空格等字符
(for /f "usebackq delims=" %%i in ("%fn%")do (
	rem 输出读取到的单行字符串到控制台(con)
	echo %%i>con
	set h=%%i
	rem 设置延迟环境变量扩展
	setlocal enabledelayedexpansion
	rem 输出单行字符串去除前2个字符的数据
	echo !h:~2!
	rem 结束延迟环境变量扩展
	endlocal
))>output.txt
pause

使用示例

1、在脚本同目录下创建文本文件test.txt

123456789
abcd
ABCD

2、执行脚本输出output.txt文件

3456789
cd
CD

在这里插入图片描述

3、查看对比test.txt和output.txt可以得知每行的前2个字符被删除了。

拓展操作

通过对字符串的变量取值时是可以对字符串进行操作的,需要注意的是如果设置延迟环境变量扩展(setlocal enabledelayedexpansion),在结束延迟环境变量扩展(endlocal)前,对会变化的变量需要使用’!‘代替’%'。
如下则是对字符串的一些操作方式:
参考:bat批处理之字符串操作的实现

字符串的截取

@echo off
set testStr=abcdefghijklmnopqrstuvwxyz0123456789
rem set 目标字符串=%源字符串:~起始值,截取长度%
rem echo %源字符串:~起始值,截取长度%
echo 原始字符串: %testStr%
echo 提取前五个字符串:%testStr:~0,5%
echo 提取最后五个字符串:%testStr:~-5%
echo 去除前两个字符的字符串:%testStr:~2%
echo 提取第一个到倒数第六个字符串:%testStr:~0,-5%
echo 提取五个字符串,从第四个字符开始:%testStr:~3,5%
pause

脚本的执行结果如下:
在这里插入图片描述

字符串的替换

@echo off
set repStr=aaabbbcccdddeeefff
echo 替换之前: %repStr%
echo 替换后:%repStr:aa=zz%
echo repStr=%repStr%
set "repStr=%repStr:aa=zz%"
echo repStr=%repStr%
pause

脚本的执行结果如下:
在这里插入图片描述

字符串合并

@echo off
set aa=aabbcc
set bb=ddeeff
echo %aa%%bb%
echo aa=%aa%
echo bb=%bb%
set "aa=%aa%%bb%"
echo aa=%aa%
pause

脚本的执行结果如下:
在这里插入图片描述

字符串查找

@echo off
rem 启用命令扩展,参见setlocal /?命令
setlocal enabledelayedexpansion
rem 注意,这里是区分大小写的!
set str1=This is a test string
set ch1=t
rem 复制字符串,用来截短,而不影响源字符串
set str=%str1%
:next
if not "%str%"=="" (
	set /a num+=1
	rem 比较首字符是否为要求的字符,如果是则跳出循环
	if "!str:~0,1!"=="%ch1%" (
		goto last
	)
	set "str=%str:~1%"
	goto next
)
rem 没有找到字符时,将num置零
set /a num=0
:last
echo 字符'%ch1%'在字符串"%str1%"中的首次出现位置为%num%
echo 输出完毕,按任意键退出&&pause>nul&&exit

脚本的执行结果如下:
在这里插入图片描述

注意事项

中文乱码解决

解决方法

用记事本打开脚本文件后,进行文件另存,在文件另存的下方将编码修改为“ANSI”即可。
在这里插入图片描述

问题原因

在使用记事本编辑bat时,脚本中需要输出中文时,会出现中文乱码的情况,其实是因为格式不同使脚本运行过程中解码错误导致显示乱码的情况。

总结

脚本基本完成功能,可以实现对数据的裁剪,同时得知bat脚本中的变量最大长度是8191个字节,同时在问题解决的过程中也查找了相关的拓展知识,也是收益匪浅。

免责声明:本文内容含网络参考、作者编写等,内容版权归原作者所有,未经允许,禁止转载。如涉及作品版权问题,请与我们联系,我们将根据您提供的版权证明材料确认版权并支付稿酬或者删除内容。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值