可以为我的问题制作批处理文件吗?
我需要提取多行内容的文本文件 这是批处理文件的场景。
我有一个文件名为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;
应该使用该规则从下一行主内容创建另一个文件。
谢谢和问候
答案 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
为数字。)