将文本文件的多行提取到新的文本文件中

时间:2014-03-06 15:51:41

标签: file batch-file text

可以为我的问题制作批处理文件吗?

我需要提取多行内容的文本文件 这是批处理文件的场景。

我有一个文件名为13051710_140211094000.txt

的txt文件

该文件的内容为:

14/02/11 09:20:00; 982.8; 15; 17; 18;
14/02/11 09:30:00; 983.0; 16; 18; 21; 1; 100; 158; 54; 131; 174; 
14/02/11 09:40:00; 983.1; 20; 21; 22; 0; 100; 127; 60; 
14/02/11 09:50:00; 983.1; 19; 20; 22; 0; 100; 149; 86; 
14/02/11 10:00:00; 983.2; 19; 20; 21; 0; 100; 151; 

我需要将每一行提取到一个新的txt文件。 新文本文件应该从每一行获取时间戳并将其转换为文件名。

新文本文件应该是这样的

MYDATA_140211092000.txt

该文件的内容为:

14/02/11 09:20:00; 982.8; 15; 17; 18;

应该使用该规则从下一行主内容创建另一个文件。

谢谢和问候

3 个答案:

答案 0 :(得分:1)

for /f "usebackq tokens=1-6,* delims=/:; " %%a in ("13051710_140211094000.txt") do (
    >>"MYDATA_%%a%%b%%c%%d%%e%%f.txt" echo(%%a/%%b/%%c %%d:%%e:%%f; %%g
)

答案 1 :(得分:0)

#!/bin/bash

while IFS= read -r line; do
datestamp=$(echo $line | cut -f 1 -d " ");
day=$(echo $datestamp |cut -f 1 -d "/")
month=$(echo $datestamp |cut -f 2 -d "/")
year=$(echo $datestamp |cut -f 3 -d "/")

timestamp=$(echo $line | cut -f 2 -d " " | cut -f 1 -d ";")
hour=$(echo $timestamp |cut -f 1 -d ":")
min=$(echo $timestamp |cut -f 2 -d ":")
sec=$(echo $timestamp |cut -f 3 -d ":")

echo $line > MYDATA_$day$month$year$hour$min$sec.txt
done < file.txt

将最后一行中的file.txt更改为主文件名

答案 2 :(得分:0)

@ECHO OFF
SETLOCAL
FOR /L %%t IN (0,1,9) DO FOR %%u IN (%%t*_*.txt) DO (
 FOR /f "delims=" %%q IN (%%u) DO (
  FOR /f "tokens=1-6delims=/:; " %%a IN ("%%q") DO (
  >>MYDATA_%%a%%b%%c%%d%%e%%f.txt ECHO(%%q
  )
 )
)
GOTO :EOF

作为Windows .cmd批处理脚本 - 您没有明确说明。

(修订版,假设目标文件以n*_*.txt格式命名,n为数字。)