批处理(Batch)文本末尾加入特定字符

文章讲述了如何使用批处理脚本在多行文本末尾添加特定字符,同时处理重复行。遇到中文文件名识别问题时,通过调整文本编辑器或控制台编码解决了编码格式差异。提供两种方法:修改编辑器编码或在脚本首行设置控制台为UTF-8。
摘要由CSDN通过智能技术生成

实例:在多行文本的每一行后面加上特定的字符串,并且删除重复的一行文本,保证每一行文本不重复。

如下图所示,预期需要达到的效果是采用批处理脚本在每行文本末尾加入特定字符",abc",并且有大于2个重复行的情况下删除重复行,保证所有行不重复。
在这里插入图片描述

具体实现的代码如下:

@echo off
>b.txt (for /f "delims=" %%l in (Fee.txt) do (
  if not defined %%l (
    set %%l=0
    echo %%l,abc
)))
pause

代码实现的结果如下图所示,会将结果写入到Result.txt中,并且去除重复行。
在这里插入图片描述
此时,上述代码已经达到了预期,但是细心的人可能会发现,源文件夹的文档名称是英文字符Fee.txt,假如文件名称是中文字符费用.txt会怎样呢?代码此时变成如下:

@echo off
>b.txt (for /f "delims=" %%l in (费用.txt) do (
  if not defined %%l (
    set %%l=0
    echo %%l,abc
)))
pause

运行代码得到如下结果:系统找不到文件 璐圭敤.txt,这表明文件并没有被批处理代码识别到,***原因是文本编辑器编码格式与windows系统控制台的默认编码格式不同,文本编辑器采用的是UTF-8的编码格式,而Windows系统默认的编码格式是ANSI,解决思路就是统一两种编码格式。***这个时候有两种解决办法:1.将文本编辑器的编码格式改为ANSI;2.将Windows系统控制台的编码方式改为UTF-8.
在这里插入图片描述
方法1:
将.bat批处理脚本右键编辑>文件>另存为,将编码格式更改为ANSI,然后保存,此时运行代码就可以得到正确的结果了。
在这里插入图片描述
方法2:
用代码将Windows控制台的编码修改成UTF-8,即在代码首行加入chcp 65001这句代码,chcp 65001是一个命令行命令,用于在Windows操作系统中设置当前控制台的代码页为UTF-8。此时运行代码也可以得到正确的结果。

@echo off
chcp 65001
>b.txt (for /f "delims=" %%l in (费用.txt) do (
  if not defined %%l (
    set %%l=0
    echo %%l,abc
)))
pause

通过以上两种方法就可以识别中文字符串的源文件了,但是根据上面的讨论,此时若源文本文件的内容也是中文的,又不想修改批处理的代码,应该怎么处理呢?回顾上述的原理,不难发现可以运行相同的技巧来实现。
看到这里的人不妨可以试一下。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值