批量拆分文本文件

09斯蒂芬

我有此批处理文件来拆分txt文件:

@echo off
for /f "tokens=1*delims=:" %%a in ('findstr /n "^" "PASSWORD.txt"') do for /f "delims=~" %%c in ("%%~b") do >"text%%a.txt" echo(%%c
pause

它可以工作,但会逐行拆分。我如何使其每隔5000行分割一次。提前致谢。

编辑:

I have just tried this:

@echo off
setlocal ENABLEDELAYEDEXPANSION
REM Edit this value to change the name of the file that needs splitting. Include the extension.
SET BFN=passwordAll.txt
REM Edit this value to change the number of lines per file.
SET LPF=50000
REM Edit this value to change the name of each short file. It will be followed by a number indicating where it is in the list.
SET SFN=SplitFile

REM Do not change beyond this line.

SET SFX=%BFN:~-3%

SET /A LineNum=0
SET /A FileNum=1

For /F "delims==" %%l in (%BFN%) Do (
SET /A LineNum+=1

echo %%l >> %SFN%!FileNum!.%SFX%

if !LineNum! EQU !LPF! (
SET /A LineNum=0
SET /A FileNum+=1
)

)
endlocal
Pause
exit

但我得到一个错误说: Not enough storage is available to process this command

MC ND

这将为您提供一个基本的骨架。根据需要进行调整

@echo off
    setlocal enableextensions disabledelayedexpansion

    set "nLines=5000"
    set "line=0"

    for /f "usebackq delims=" %%a in ("passwords.txt") do (
        set /a "file=line/%nLines%", "line+=1"
        setlocal enabledelayedexpansion
        for %%b in (!file!) do (
            endlocal
            >>"passwords_%%b.txt" echo(%%a
        )
    )

    endlocal

已编辑

如注释所示,很难管理4.3GB的文件。for /f需要将整个文件加载到内存中,并且在将文件转换为内存中的unicode时,所需的缓冲区大小是此大小的两倍。

这是一个完全临时的解决方案。我没有在那么高的文件上对其进行过测试,但是至少从理论上讲它应该可以工作(除非5000行需要大量内存,这取决于行长)

而且,有了这样的文件,它将很慢

@echo off
    setlocal enableextensions disabledelayedexpansion

    set "line=0"
    set "tempFile=%temp%\passwords.tmp"

    findstr /n "^" passwords.txt > "%tempFile%"
    for /f %%a in ('type passwords.txt ^| find /c /v "" ') do set /a "nFiles=%%a/5000"

    for /l %%a in (0 1 %nFiles%) do (
        set /a "e1=%%a*5", "e2=e1+1", "e3=e2+1", "e4=e3+1", "e5=e4+1"
        setlocal enabledelayedexpansion
        if %%a equ 0 (
            set "e=/c:"[1-9]:" /c:"[1-9][0-9]:" /c:"[1-9][0-9][0-9]:" /c:"!e2![0-9][0-9][0-9]:" /c:"!e3![0-9][0-9][0-9]:" /c:"!e4![0-9][0-9][0-9]:" /c:"!e5![0-9][0-9][0-9]:" "
        ) else (
            set "e=/c:"!e1![0-9][0-9][0-9]:" /c:"!e2![0-9][0-9][0-9]:" /c:"!e3![0-9][0-9][0-9]:" /c:"!e4![0-9][0-9][0-9]:" /c:"!e5![0-9][0-9][0-9]:" "
        )
        for /f "delims=" %%e in ("!e!") do (
            endlocal & (for /f "tokens=1,* delims=:" %%b in ('findstr /r /b %%e "%tempFile%"') do @echo(%%c)>passwords_%%a.txt
        )
    )

    del "%tempFile%" >nul 2>nul

    endlocal

再次编辑:以前的代码将不适用于以冒号开头的行,因为它已在for命令中用作分隔符以从数据中分离行号。

作为替代,仍然是纯批生产,但仍然很慢

@echo off
    setlocal enableextensions disabledelayedexpansion

    set "nLines=5000"
    set "line=0"
    for /f %%a in ('type passwords.txt^|find /c /v ""') do set "fileLines=%%a"

    < "passwords.txt" (for /l %%a in (1 1 %fileLines%) do (
        set /p "data="
        set /a "file=line/%nLines%", "line+=1"
        setlocal enabledelayedexpansion
        >>"passwords_!file!.txt" echo(!data!
        endlocal
    ))

    endlocal

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将文本文件批量拆分为出现字符串的文本文件

来自分类Dev

拆分文本文件-Python中的列到行

来自分类Dev

根据其内容拆分文本文件

来自分类Dev

ValueError 试图拆分文本文件的行

来自分类Dev

如何在某个字符处拆分文本文件以创建多个文本文件

来自分类Dev

按新行拆分文本文件中的文本

来自分类Dev

批量删除文本文件的行

来自分类Dev

批量翻转文本文件

来自分类Dev

拆分文本文件时应对for循环批处理文件问题

来自分类Dev

如何拆分文本文件,使每个段落都是自己的文件?

来自分类Dev

根据bash中的单词数拆分文本文件

来自分类Dev

根据node.js中的行数拆分文本文件

来自分类Dev

拆分文本文件并在第一列的基础上重命名

来自分类Dev

Python拆分文本文件以保留换行符

来自分类Dev

使用带运算符的批处理拆分文本文件

来自分类Dev

在Linux中使用bash如何根据百分比拆分文本文件

来自分类Dev

根据bash中的单词数拆分文本文件

来自分类Dev

根据正则表达式拆分文本文件

来自分类Dev

如何在目录中按字符数拆分文本文件

来自分类Dev

在python中使用递归根据分隔符拆分文本文件

来自分类Dev

如何在java中按行间距拆分文本文件

来自分类Dev

Bash - 按位置/索引在列中拆分文本文件

来自分类Dev

如何按字符串拆分文本文件内容?

来自分类Dev

从文本文件解析和拆分

来自分类Dev

基于文本批量移动文本文件中的行

来自分类Dev

如何按与另一组文件相对应的行数拆分文本文件?

来自分类Dev

如何在C#中通过给定的分隔符拆分文本文件

来自分类Dev

ASP.NET MVC:如何按固定宽度拆分文本文件中的行并传递给模型

来自分类Dev

类型错误:尝试拆分文本文件时,不支持 +: 'int' 和 'list' 的操作数类型

Related 相关文章

  1. 1

    将文本文件批量拆分为出现字符串的文本文件

  2. 2

    拆分文本文件-Python中的列到行

  3. 3

    根据其内容拆分文本文件

  4. 4

    ValueError 试图拆分文本文件的行

  5. 5

    如何在某个字符处拆分文本文件以创建多个文本文件

  6. 6

    按新行拆分文本文件中的文本

  7. 7

    批量删除文本文件的行

  8. 8

    批量翻转文本文件

  9. 9

    拆分文本文件时应对for循环批处理文件问题

  10. 10

    如何拆分文本文件,使每个段落都是自己的文件?

  11. 11

    根据bash中的单词数拆分文本文件

  12. 12

    根据node.js中的行数拆分文本文件

  13. 13

    拆分文本文件并在第一列的基础上重命名

  14. 14

    Python拆分文本文件以保留换行符

  15. 15

    使用带运算符的批处理拆分文本文件

  16. 16

    在Linux中使用bash如何根据百分比拆分文本文件

  17. 17

    根据bash中的单词数拆分文本文件

  18. 18

    根据正则表达式拆分文本文件

  19. 19

    如何在目录中按字符数拆分文本文件

  20. 20

    在python中使用递归根据分隔符拆分文本文件

  21. 21

    如何在java中按行间距拆分文本文件

  22. 22

    Bash - 按位置/索引在列中拆分文本文件

  23. 23

    如何按字符串拆分文本文件内容?

  24. 24

    从文本文件解析和拆分

  25. 25

    基于文本批量移动文本文件中的行

  26. 26

    如何按与另一组文件相对应的行数拆分文本文件?

  27. 27

    如何在C#中通过给定的分隔符拆分文本文件

  28. 28

    ASP.NET MVC:如何按固定宽度拆分文本文件中的行并传递给模型

  29. 29

    类型错误:尝试拆分文本文件时,不支持 +: 'int' 和 'list' 的操作数类型

热门标签

归档