Board logo

标题: [文本处理] 批处理按照行数割文本文件怎么写? [打印本页]

作者: netdzb    时间: 2024-5-20 10:36     标题: 批处理按照行数割文本文件怎么写?

一个文本文件,需求按照30行进行分割成
原文件名-001.txt,
原文件名-002.txt
依次类推

虽然有split命令可以分割,但我还想知道
用批处理如何处理?
作者: Batcher    时间: 2024-5-20 10:51

回复 1# netdzb



http://bbs.bathome.net/thread-1181-1-1.html
http://bbs.bathome.net/thread-4440-1-1.html
http://bbs.bathome.net/thread-5380-1-1.html
http://bbs.bathome.net/thread-11549-1-1.html
http://bbs.bathome.net/thread-15394-1-1.html
http://bbs.bathome.net/thread-17363-1-1.html
http://bbs.bathome.net/thread-21506-1-1.html
http://bbs.bathome.net/thread-23199-1-1.html
http://bbs.bathome.net/thread-27116-1-1.html
作者: qixiaobin0715    时间: 2024-5-20 14:22

  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. )
复制代码
未经测试
作者: netdzb    时间: 2024-5-20 14:38

回复 3# qixiaobin0715

echo , 加个逗号是什么意思啊?
代码写的挺讲究啊,都考虑到30000行文本的分割了,谢谢噢!
作者: qixiaobin0715    时间: 2024-5-20 14:53

逗号空格是一个意思
作者: 77七    时间: 2024-5-20 17:10

回复 4# netdzb


   批处理技术内幕:ECHO命令
作者: 77七    时间: 2024-5-20 17:27

  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
复制代码

作者: 877    时间: 2024-5-20 18:21

回复 7# 77七


    77七大佬,求助新帖期待您出手相助
作者: Five66    时间: 2024-5-20 18:37

分割的文件结尾会多一个换行符
编码全部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
复制代码





欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2