【问题标题】:split txt file line by line and create from each line a txt file逐行拆分txt文件并从每一行创建一个txt文件
【发布时间】:2015-04-30 09:01:41
【问题描述】:

我需要一个批处理脚本,它用 4 行拆分文件并从这 4 行创建 4 个 txt 文件。

看起来像这样:test.txt

line 1
line 2
line 3
line 4

--> 每一行都应该输出到另一个txt文件中。

谢谢大家,安妮塔

【问题讨论】:

  • 每一行都应该打印在同名文件中?

标签: file batch-file split lines createfile


【解决方案1】:
@echo off
    setlocal enableextensions disabledelayedexpansion

    set "inputFile=test.txt"
    for %%z in ("%inputFile%") do if %%~zz gtr 0 (
        set "lineNumber=1000000000"
        for /f "delims=" %%a in ('
            findstr /n "^" "%inputFile%"
        ') do (
            set "line=%%a" & set /a "lineNumber+=1" 
            setlocal enabledelayedexpansion 
            >"%%~fz.!lineNumber:~-9!" (echo(!line:*:=!)
            endlocal
        )
    )

【讨论】:

    【解决方案2】:

    编辑:我稍微简化了代码...

    @echo off
    
    for /F "tokens=1* delims=:" %%a in ('findstr /N "^" test.txt') do (
       > file%%a.txt echo(%%b
    )
    

    如果文件中的一行以冒号开头,此解决方案将消除冒号。如果需要,这个问题可能会得到解决。

    【讨论】:

    • 为什么不简单地回显每一行而不是使用 SET /P?
    • @dbenham:因为使用set /P,该行可以用引号引起来。这样,如果该行有特殊字符,如<|>&,它们会被正确复制...
    • 但是在扩展 FOR 变量时,您不必担心转义或引用有毒字符。
    • 操作!我对延迟扩展的频繁使用过于偏见! ;)我修改了代码...
    • 您应该使用echo(%%b,因为该行可能是空的或只有空白。
    【解决方案3】:
    @echo off
    set "filen=c:\file.txt"
    
    for /f "usebackq tokens=* delims=" %%a in ("%filen%") do (
       (echo(%%a>%%a)
    )
    

    【讨论】:

    • 这个很好用,但文件没有内容(第 1 行应该是 file1.txt 的内容,第 2 行应该是 file2.txt 的内容)...其他想法?非常感谢大家,安妮塔
    • @diva - 应经过测试和修复。
    猜你喜欢
    • 1970-01-01
    • 2021-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-11
    • 2020-12-21
    • 1970-01-01
    相关资源
    最近更新 更多