如何从文本文件中读取单行,将其拆分为2行,并将2行输出到另一个文本文件?

时间:2014-08-25 14:57:48

标签: batch-file cmd batch-processing

我想要一个可以执行以下操作的批处理代码:

  1. 将文本文件的所有内容加载到变量中。内容只有一行。

  2. 然后将1行分成2部分。

  3. 将这两部分作为新行放入另一个文本文件中。

  4. 假设我的内容是:

    Bill Gates was born in 1955. <--When was Bill Gates born?-->
    

    所以我想要一个批处理文件,将上面的整个句子转换为变量。

    然后把它分成两部分,如

    1. Bill Gates was born in 1955.

    2. <--When was Bill Gates born?-->

    3. 然后将这两行导入另一个文本文件result.txt,打开后,应该以这种方式存在这两行

      Bill Gates was born in 1955.
      <--When was Bill Gates born?-->
      

      句子的语法:

      xx yy <--xxy yyz -->
      

      result.txt中的新行:

      xx yy
      <--xxy yyz -->
      

      请注意,句子可能会改变。我举了一个例子。句子必须分为两部分,第1部分在<--之前,第2部分<--...-->,其中...是数据。

3 个答案:

答案 0 :(得分:0)

这是一种简单的方法:

@echo off
type "file.txt" | repl "(.*)(<.*)" "$1\r\n$2" x >"newfile.txt"

这使用名为repl.bat的助手批处理文件(由dbenham提供) - 从以下网址下载:https://www.dropbox.com/s/qidqwztmetbvklt/repl.bat

repl.bat放在与批处理文件相同的文件夹中或放在路径上的文件夹中。

您也可以使用for /f循环。

答案 1 :(得分:0)

答案几乎太容易了:

set /p line=<in.txt
for /f "tokens=1,2 delims=<" %%i in ("%line%") do (
  echo %%i>out.txt
  echo ^<%%j>>out.txt
)

答案 2 :(得分:0)

第一个选项,子串操作

@echo off
    setlocal enableextensions disabledelayedexpansion

    rem read the first line of input file
    < file.txt set /p "line1="

    rem extract the second line of output file
    set "line2=%line1:*<--=<--%"

    rem extract the first line of output file
    set "line=%line2%"
    :loop
    set "line1=%line1:~0,-1%"
    set "line=%line:~0,-1%"
    if defined line goto loop

    rem generate output file
    setlocal enabledelayedexpansion
    (   echo !line1!
        echo !line2!
    ) > result.txt
    endlocal

但这不是很有效率。更好地使用

@echo off
    setlocal enableextensions disabledelayedexpansion

    rem read the first line of input file
    < file.txt set /p "line="

    rem extract and output the lines
    for /f "tokens=1,2 delims=|" %%a in ("%line:<--=|<--%") do (
        echo %%a
        echo %%b
    ) > result.txt

已编辑尝试解决评论中陈述的问题

@echo off
    setlocal enableextensions disabledelayedexpansion

    rem prepare the sample file to be readed
    >file.txt echo Bill Gates was born in 1955. ^<--When was Bill Gates born?--^>

    rem read the first line of input file
    < file.txt set /p "line="

    rem extract and output the lines
    for /f "tokens=1,2 delims=|" %%a in ("%line:<--=|<--%") do (
        echo %%a
        echo %%b
    ) > result.txt

    rem show the result
    type result.txt