使用批处理命令合并文本文件

一、关于批处理命令的简单说明

为什么使用批处理命令合并文件

Windows的批处理命令在过去是一种常见和被广泛使用的自动化工具,但随着时间的推移,因其功能相对较为简单、语法复杂、变量处理有限、可移植性差等问题,已无法满足使用。

不过许多场景下它仍然非常有用,比如它可以方便地执行基本的文件操作、系统管理任务,对于一些简单的任务来说是一个有效且快速的解决方案

而且它在Windows操作系统中仍然起着重要的作用,并被广泛使用,比如我们熟悉的JMeter、Apache Tomcat、Apache Kafka、Elasticsearch、Apache ZooKeeper都是使用.bat文件来启动和管理程序或服务的

二、使用批处理命令合并文本文件

  • 背景:在目录merge下有几十个.txt文件需要合并为一个文件
1、使用type命令

首先在merge路径栏中输入 cmd ,然后回车,系统会自动打开命令窗口,并定位到当前目录下

在这里插入图片描述

输入以下命令,回车,merge目录下生成一个merged.txt文件,将所有的文件内容进行了合并

type *.txt >> merged.txt

不足:

  • type命令合并的文件内容,上下文件间没有换行,会导致下一个文件的内容直接追加在上一个文件的最后一行
  • "type"命令只能处理文本文件,无法正确处理二进制文件或包含特殊格式的文件
2、使用for和more命令

将以下命令保存在一个txt文件中,然后重命名为以.bat结尾的文件,如merge.bat,把文件放到merge目录下,双击执行

@echo off
chcp 65001
for %%a in (*.txt) do (
    more %%a >>all
)
ren all all.txt

命令说明:

  • @echo off :关闭页面回显,即页面不会显示执行过程。
  • chcp 65001:改变命令行窗口的字符编码为 UTF-8 ,在 Windows 系统中,默认的命令行字符编码通常是 ASCII 或者根据地区设置。这里切换编码,解决中文乱码情况。
  • for %%a in (*.txt) do ():for命令,循环读取所有以 .txt 结尾的文件,并把文件名赋给变量 %%a,在 () 内可以添加需要执行的命令或操作,以对每个文件进行处理。
  • more %%a >>all:使用more命令,将内容追加到all文件中。
  • ren all all.txt:将all文件重命令为all.txt。

type和more命令简单比较:

type 命令将文本文件的内容一次性显示在命令行窗口上。
more 命令也可以显示文本文件的内容,但它以分页的方式逐页显示,每次只显示一页。
type 命令适合快速查看较小的文本文件内容,
而 more 命令适合查看较大的文本文件内容

释疑:
为什么 more %%a >>all 中使用all文件,而不是直接用all.txt文件

如果直接使用all.txt作为输出文件,那么在合并过程中,all.txt本身也会被当作一个输入文件。这样一来,合并过程可能会出现问题,比如重复内容或者无限循环。

为了避免这个问题,先将所有的.txt文件合并到一个临时的all文件中。然后在合并完成之后,再将这个all文件重命名为all.txt。这样可以确保合并过程的正确性,避免潜在的问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值