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

File 将文本文件的多行提取到新文本文件中,file,batch-file,text,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;

可以为我的问题生成批处理文件吗

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

我有一个文件名为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; 
14/02/11 09:20:00; 982.8; 15; 17; 18;
我需要提取每一行到一个新的txt文件。 新的文本文件应该是从每行中提取时间戳并将其转换为文件名

新的文本文件应该是这样的

MYDATA_140211092000.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; 
14/02/11 09:20:00; 982.8; 15; 17; 18;
并且应该根据该规则从主内容的下一行创建另一个文件

谢谢和问候

#/bin/bash
#!/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
而IFS=读取-r行;做 邮戳=$(echo$行| cut-f 1-d“”); 日期=$(echo$邮戳| cut-f 1-d/) 月份=$(echo$邮戳| cut-f2-d/) 年份=$(echo$邮戳| cut-f3-d/) 时间戳=$(echo$行| cut-f2-d”“| cut-f1-d”“) 小时=$(echo$时间戳| cut-f 1-d:) min=$(echo$时间戳| cut-f2-d:) 秒=$(回声$时间戳|切-f 3-d:) echo$line>MYDATA_u$day$month$year$hour$min$sec.txt 完成
将最后一行中的file.txt更改为主文件名

@ECHO OFF
SETLOCAL
对于/L%%t IN(0,1,9),对于%%u IN(%%t*.*.txt)DO(
对于/f“delims=“%%q IN(%%u)DO(
对于/f“tokens=1-6delims=/:;”“%%a IN(“%%q”)DO(
>>MYDATA\%a%%b%%c%%d%%e%%f.txt回音(%%q
)
)
)
后藤:EOF
作为windows
.cmd
批处理脚本,您还没有明确说明这一点


(修订版,假设目标文件的命名格式为
n*.*.txt
n
numeric。)

MYDATA
字面上的“MYDATA”还是提取行的一部分?MYDATA字面上是MYDATA,不是要提取的数据的一部分我认为他需要一个批处理,而不是bash文件:)这个批处理脚本适合我,谢谢你的帮助。但有一点我忘了解释,如果我有多个文本文件的类型,例如,我在同一个文件夹中有三个txt文件,13051710_140211094000.txt 13051710_140211095000.txt 13051710_140211096000.txt版本适合我,太棒了!非常感谢。另一种情况是,如果我提到,我希望字符13051710作为识别文件的主密钥。实际上,这是我设备的序列号。如果我在同一文件夹中有来自另一个设备的另一个文件,例如12051711_timestamp,它可能会有用,因为您可以看到我的示例文件后面是_字符后的时间戳。