首页 > 其他分享 >【bat脚本】批处理如何把文本文件分割成N个文本文件?

【bat脚本】批处理如何把文本文件分割成N个文本文件?

时间:2024-11-02 23:43:32浏览次数:1  
标签:count 10 bat set 文件 批处理 %% 文本文件 11

原创 bat学习 Bat批处理学习站

需求

比如我现在有一文本文件,我要上传,但是太大(文件8-12M之间),不允许,我想把它分割成N个小文件(按行分割,行数可以自行设定),文件内容全部是数字和部分符号,比如内容:
1 2 3 4 5 6+7
2 3 4 5 6 7+8
3 4 5 6 7 8+9
4 5 6 7 8 9+10
5 6 7 8 9 10+11
6 7 8 9 10 11+12
7 8 9 10 11 12+13
8 9 10 11 12 13+14
9 10 11 12 13 14+15
10 11 12 13 14 15+16
现在想用批处理自动把它分割成N个文本文件,要求为按行分割(行数可以自行设置)这次比如共10行,我要分成每2行一个文件,则第一个为
1 2 3 4 5 6+7
2 3 4 5 6 7+8
第二个文本的内容为
3 4 5 6 7 8+9
4 5 6 7 8 9+10
第三个文本的内容为
5 6 7 8 9 10+11
6 7 8 9 10 11+12
.................
这个批处理该如何写呢?

解决代码


@echo off
set file="Test.txt"
set per=100

for %%a in (%file%) do set "dpn=%%~dpna" & set "x=%%~xa"
set /a count=per-1, n=0
setlocal enabledelayedexpansion
for /f "usebackq delims=" %%a in (!file!) do (
  set /a count+=1, n=count/per
  echo %%a>>"!dpn!__!n!!x!"
)

代码解析

这段批处理脚本的功能是将一个文本文件Test.txt分割成多个小文件,每个小文件包含原文件中的100行。以下是脚本的详细解释:
脚本功能概述

设置文件名和每份文件应包含的行数。

获取文件的驱动器路径和扩展名。

初始化计数器。

启用延迟变量扩展。

逐行读取文件内容,并根据行数将内容写入不同的小文件。

脚本详细解释

@echo off
#关闭命令回显。

set file="Test.txt"
#设置要分割的文件名为Test.txt。

set per=100
#设置每份小文件应包含的行数为100。

for %%a in (%file%) do set "dpn=%%~dpna" & set "x=%%~xa"
#获取文件的驱动器路径(dpn)和扩展名(x)。

set /a count=per-1, n=0
#初始化计数器count为99(因为是从0开始计数的),n为0。


setlocal enabledelayedexpansion
#启用延迟变量扩展,以便在循环中动态更新变量。

for /f "usebackq delims=" %%a in (!file!) do (
  set /a count+=1, n=count/per
  echo %%a>>"!dpn!__!n!!x!"
)

#逐行读取文件内容。每读取一行,计数器count加1。计算当前行应该写入哪个小文件(n=count/per)。将当前行的内容追加到相应的小文件中。

注意事项

此脚本假设文件名是Test.txt,如果需要处理其他文件,请修改set file="Test.txt"这一行。

如果文件非常大,这个脚本可能会运行很长时间。

这个脚本没有错误处理机制,如果文件不存在或无法读取,脚本将失败。

总之,这是一个用于分割大文本文件的批处理脚本,适用于需要将一个大文件拆分成多个小文件的场景。

参考

标签:count,10,bat,set,文件,批处理,%%,文本文件,11
From: https://www.cnblogs.com/o-O-oO/p/18522715

相关文章

  • Mybatis参数传递&注解开发
    参数传递点击查看代码/*MyBatis参数封装:*单个参数:1.POJO类型:直接使用,属性名和参数占位符名称一致2.Map集合:直接使用,键名和参数占位符名称一致3.Collection:封装为Map集合,可以使用@Param注解,替换Map集......
  • Mybatis修改
    1.删除一个点击查看代码voiddeleteById(intid);<deleteid="deleteById">deletefromtb_brandwhereid=#{id};</delete>@TestpublicvoidtestDeleteById()throwsIOException{//接收参数intid=6;......
  • Mybatis添加&修改
    一添加点击查看代码voidadd(Brandbrand);<insertid="add"useGeneratedKeys="true"keyProperty="id"><!--主键返回-->insertintotb_brand(brand_name,company_name,ordered,description,status)values(#{br......
  • 使用批处理,切换电源计划,切换自动休眠时间
    1、打开命令提示符:按Win+R,输入cmd,然后按Enter。2、列出电源计划的GUIDpowercfg/list获取输出结果取下:C:\Users\Administrator>powercfg/list现有电源使用方案(*Active)-----------------------------------电源方案GUID:381b4222-f694-41f0-****-ff5bb260df......
  • MyBatis与Mybatis-plus的学习总结 及 两者的区别 我的学习笔记
    MyBatis与Mybatis-plus的学习总结及两者的区别超详细样例很多我的学习笔记一、MyBatis1.MyBatis简介2.MybatisX插件3.Mapper代理开发4.配置文件完成CRUD5.注解完成CRUD6.动态SQL二、MyBatis-plus1.MyBatis-plus快速入门2.条件构造器WrapperAbstractWrapperQueryWra......
  • mybatis - [10] 三剑客generator&pagehelper$mybatis-plus
    题记部分 一、mybatis-generator1.1、概述mybatis-generator是一个能快速生成xml、dao接口、实体类、注解类的代码生成器。官网地址:https://mybatis.org/generator/index.html 1.2、配置方式-1引入Maven插件依赖<build><plugins><plugin>......
  • windows 命令行执行.bat ,显示已经达到最大的setlocal递归层,解决办法
    windows命令行执行.bat,显示已经达到最大的setlocal递归层,网上也没有一个确切的解决办法,自己摸索寻找解决如下:C:\Users\yangz\Desktop>pingwww.baidu.com已经达到最大的setlocal递归层。一.解决思路:这条信息表明你在使用Windows命令提示符(CMD)时遇到了一个错误。错误信......
  • mybatis---回顾jdbc
    回顾JDBC使用IDEA创建maven工程打开IDEA,选择CreateNewProject,点击Maven,如下:点击Next,填写Maven工程信息,如下:GroupId:com.mybatisArtifactId:MyBatisAppVersion:1.0-SNAPSHOT点击创建按钮,即Maven工程就创建好了引入mysql依赖包在Maven工程的pom.xml文件中导入......
  • Adobe Acrobat Pro 2024 v24.3.20180 (macOS, Windows) - 创建、转换和编辑 PDF
    AdobeAcrobatPro2024v24.3.20180(macOS,Windows)-创建、转换和编辑PDFAdobeAcrobatPDFsoftware请访问原文链接:https://sysin.org/blog/adobe-acrobat查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgAcrobat:创建、转换和编辑PDF借助Acrobat实现各种......
  • 小白手把手教学用spring框架实现mybatis和mysql以及工作原理
    Maven_Mybatis_Mysql什么是MybatisMyBatis是一款优秀的持久层框架,它支持自定义SQL、存储过程以及高级映射。MyBatis免除了几乎所有的JDBC代码以及设置参数和获取结果集的工作。MyBatis可以通过简单的XML或注解来配置和映射原始类型、接口和JavaPOJO(PlainOldJavaObj......