基于分割文件

时间:2015-11-04 10:51:13

标签: windows batch-file text split

我 大家好,

我需要根据文件中匹配的变量内容拆分文件。 我需要在分割参数(此处为" ///")上拆分文件,只有当以25开头的行:分割参数之前和之后的行不同时。 然后应使用:25:标记的表达式命名文件。 我需要使用.cmd命令执行此操作... 我已经厌倦了令牌,但一直没有成功。 有人可以帮我这个吗?

例如,下面的文件初始文件:

:01:BLABLA
:25:123456
:71:BLABLABLA1
:86:BLABLABLA2
:71:BLABLABLA3
:86:BLABLABLA4
///
:25:123456
:71:BLABLABLA5
:86:BLABLABLA6
:71:BLABLABLA7
:86:BLABLABLA8
///
:25:123457
:71:BLABLABLA0
:86:BLABLABLA9

应分为两个文件:

123456.TXT

:01:BLABLA
:25:123456
:71:BLABLABLA1
:86:BLABLABLA2
:71:BLABLABLA3
:86:BLABLABLA4
///
:25:123456
:71:BLABLABLA5
:86:BLABLABLA6
:71:BLABLABLA7
:86:BLABLABLA8

123457.TXT

:25:123457
:71:BLABLABLA0
:86:BLABLABLA9

2 个答案:

答案 0 :(得分:0)

试试这个:

Queries

只需使用正确的文件/路径替换@echo off setlocal EnableDelayedExpansion set inFile=inputTextFile.txt set outFile=tempFile.txt for /F "tokens=*" %%L in (%inFile%) do ( set currentline=%%L if "%%L"=="///" ( set outFile=tempFile.txt ) if "!currentLine:~0,4!"==":25:" ( set outFile=!currentLine:~4!.txt if exist tempFile.txt ( if exist !outFile! ( copy !outFile!+tempFile.txt !outFile! del tempFile.txt ) else ren tempFile.txt !outFile! ) ) echo %%L>>!outFile! )

答案 1 :(得分:0)

@echo off
setlocal EnableDelayedExpansion

del temp.tmp *.out 2> NUL

set "file=not25tag"
for /F "tokens=1* delims=:" %%a in (input.txt) do (
   if "%%a" equ "25" set "file=%%b"
   if "%%a" neq "///" (
      echo :%%a:%%b>> temp.tmp
   ) else (
      if not exist "!file!.out" (
         ren temp.tmp "!file!.out"
      ) else (
         echo ///>> "!file!.out"
         type temp.tmp >> "!file!.out"
         del temp.tmp
      )
      set "file=not25tag"
   )
)

if not exist "!file!.out" (
   ren temp.tmp "!file!.out"
) else (
   echo ///>> "!file!.out"
   type temp.tmp >> "!file!.out"
   del temp.tmp
)

ren *.out *.txt