使用windows批处理将文本文件拆分为多个文件

使用windows批处理将文本文件拆分为多个文件,windows,batch-file,scripting,Windows,Batch File,Scripting,此批处理脚本的思想是分割一个文件,该文件包含以“/”分隔的信息行,然后根据时间戳以及作为文件扩展名的特殊关键字命名该文件。该文件还包含一个头,需要在拆分文件之前先删除该头。主文件的示例: 主收割台1 主集管8 单据(副标题) 第1行 第2行 第3行 第4行 第5行 // 文本 第1行 第2行 第3行 第4行 第5行 // 医生 第1行 第2行 第3行 第4行 第5行 // 因此,基本上,批处理脚本将主标题转换为“//”,然后使用“//”作为分隔符,将内容分解为单独的文件。每个文件将根据

此批处理脚本的思想是分割一个文件,该文件包含以“/”分隔的信息行,然后根据时间戳以及作为文件扩展名的特殊关键字命名该文件。该文件还包含一个头,需要在拆分文件之前先删除该头。主文件的示例:

  • 主收割台1
  • 主集管8
  • 单据(副标题)
  • 第1行
  • 第2行
  • 第3行
  • 第4行
  • 第5行
  • //
  • 文本
  • 第1行
  • 第2行
  • 第3行
  • 第4行
  • 第5行
  • //
  • 医生
  • 第1行
  • 第2行
  • 第3行
  • 第4行
  • 第5行
  • //

因此,基本上,批处理脚本将主标题转换为“//”,然后使用“//”作为分隔符,将内容分解为单独的文件。每个文件将根据时间戳(yyyymmdd_hhmmss)和子标题“TXT”和“DOC”作为文件扩展名进行命名。 示例20140914_001411.TXT或20140914.013326

  • 单个文件的示例
  • 文本
  • 第1行
  • 第2行
  • 第3行
  • 第4行
  • 第5行
如果在主文件中找不到关键字TXT或DOC,则无需执行任何操作

真的很感谢如果有人能帮助我与这个脚本

谢谢/问候

@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
设置“destdir=U:\destdir”
设置“extensions=doc txt”
设置“日期戳=%date%\uu%time%”
对于(/-“”.:)中的%%s,请设置“datestamp=!datestamp:%%~s=!”
设置“输出=”
对于(%extensions%)中的%%a,请删除“%destdir%\%datestamp%.%%a”>NUL 2>NUL
对于/f“delims=”%(q25829175.txt)中的%%a(
如果“%%a”==“/”(设置“输出=Y”&设置“外部=”
)否则(
如果定义了输出(
如果未在(%extensions%)中为%%s定义扩展名,请执行IF/i“%%a”==“%%s”设置“扩展名=%%s”
如果定义了ext(>>“%destdir%\%datestamp%”。!ext!”回显(%%a)其他(设置“output=”)
)
)
)
后藤:EOF
您需要更改
destdir
的设置以适应您的环境

我在测试中使用了一个名为
q25829175.txt
的文件,其中包含您的数据,但我删除了终止空格,并在每个数据部分的每一行中添加了一个字母,以便可以单独区分它们

本质上,每次遇到
/
时,都会设置
output
标志,并清除
ext
数据。如果我们正在输出(
output
set),那么如果未设置
ext
,则这必须是潜在部分的第一行,因此会检查并建立它

如果
ext
保持未设置状态,则此节不感兴趣,请清除输出标志,否则
ext
包含节id,以便输出到该文件


您需要根据您的特殊要求操作
日期戳
。操作简单-只需查阅有关批处理子字符串的任意数量的SO文章。

欢迎来到StackOverflow。不幸的是,这个问题属于“请帮我做作业”(即使它不是您的作业).StackOverflow用于询问有关代码的问题。它不是用于请求提供代码。如果您在问题上遇到了问题,您应该来询问这些问题。请参阅“主题外”第3项,此处: