找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 25836|回复: 8

[文本处理] 批处理按照行数割文本文件怎么写?

[复制链接]
发表于 2024-5-20 10:36:00 | 显示全部楼层 |阅读模式
一个文本文件,需求按照30行进行分割成
原文件名-001.txt,
原文件名-002.txt
依次类推

虽然有split命令可以分割,但我还想知道
用批处理如何处理?
发表于 2024-5-20 10:51:01 | 显示全部楼层
发表于 2024-5-20 14:22:09 | 显示全部楼层
  1. @echo off
  2. set n=0
  3. set x=30
  4. set /a y=x-1
  5. set z=1000
  6. setlocal enabledelayedexpansion
  7. for /f "delims=" %%i in (test.txt) do (
  8.     set /a m=n%%x
  9.     set /a n+=1
  10.     set str!m!=%%i
  11.     if !m! equ %y% (
  12.         set /a z+=1
  13.         (for /l %%j in (0,1,%y%) do (
  14.             echo,!str%%j!
  15.         ))>test-!z:~-3!.txt
  16.     )
  17. )
  18. set /a z+=1
  19. if !m! neq %y% (
  20.     (for /l %%j in (0,1,!m!) do (
  21.         echo,!str%%j!
  22.     ))>test-!z:~-3!.txt
  23. )
复制代码
未经测试
 楼主| 发表于 2024-5-20 14:38:06 | 显示全部楼层
回复 3# qixiaobin0715

echo , 加个逗号是什么意思啊?
代码写的挺讲究啊,都考虑到30000行文本的分割了,谢谢噢!
发表于 2024-5-20 14:53:20 | 显示全部楼层
逗号空格是一个意思
发表于 2024-5-20 17:10:33 | 显示全部楼层
发表于 2024-5-20 17:27:28 | 显示全部楼层
  1. @echo off
  2. cd /d "%~dp0"

  3. set file=1.txt
  4. set l=30
  5. set _0=3

  6. set m=10000001
  7. for /f "delims=" %%i in ("%file%") do (
  8.         for /f "tokens=1* delims=[]" %%a in ('find /n /v "" ^<"%%i"') do (
  9.                 setlocal enabledelayedexpansion
  10.                 for /f %%x in ("!m:~-%_0%!") do (
  11.                         endlocal
  12.                         >>"%%~ni-%%x%%~xi" echo=%%b
  13.                 )
  14.                 set /a n=%%a%%%l%,1/n 2>nul || set /a m+=10000001
  15.         )
  16. )
  17. pause
复制代码
发表于 2024-5-20 18:21:19 | 显示全部楼层
回复 7# 77七


    77七大佬,求助新帖期待您出手相助
发表于 2024-5-20 18:37:08 | 显示全部楼层
分割的文件结尾会多一个换行符
编码全部gbk或ansi

  1. @echo off

  2. set @file=test.txt
  3. set hangshu=30
  4. set shuliang=0
  5. set houzhuishuzi=1000
  6. set "houzhui=_!shuliang:~-3!"

  7. for %%a in ("%@file%") do set @newfile=%%~na&set @fileext=%%~xa
  8. for /f "usebackq delims=" %%i in (`findstr /n .* "%@file%"`) do (
  9. set "line=%%i"
  10. set /a shuliang=aaa/hangshu+houzhuishuzi+1
  11. set /a aaa+=1
  12. setlocal enabledelayedexpansion
  13. if not defined @%houzhui% (
  14. echo create file !@newfile!%houzhui%!@fileext!
  15. cd. >"!@newfile!%houzhui%!@fileext!"
  16. for %%z in ("@%houzhui%") do endlocal&set %%~z=1
  17. ) else (endlocal)
  18. setlocal enabledelayedexpansion
  19. (
  20. echo(!line:*:=!|| ^)?
  21. )>>"!@newfile!%houzhui%!@fileext!"
  22. endlocal
  23. )
  24. pause&exit/b
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-18 01:19 , Processed in 0.015083 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表