2014-03-06 161 views
0

是否可以爲我的問題創建批處理文件?將多行文本文件提取到新文本文件中

我需要提取的文本文件多行 的內容這裏是批處理文件的場景。

我有一個文件名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

是'MYDATA'字面意思是「MYDATA」或者是提取的線的一部分? –

+0

MYDATA字面上是MYDATA,而不是數據的一部分被提取 – user3388957

回答

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數字。)

+0

這個批處理腳本適用於我,謝謝你的幫幫我 。 但有件事我忘了解釋,如果我有什麼用這種類型的文本文件的多個文件,例如我曾在同一文件夾的三項txt文件, 13051710_140211094000.txt 13051710_140211095000.txt 13051710_140211096000.txt – user3388957

+0

編輯版本適合我,太棒了!非常感謝。另一種情況,如果我提到,我想要字符13051710,作爲我的主密鑰來識別文件。 Actualy是我的設備的序列號。 如果我在同一文件夾中有另一個設備的另一個文件,例如12051711_timestamp,可能會有用,因爲您可以看到我的示例文件在_字符後面跟着時間戳。 – user3388957

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的最後一行到您的主文件名

+0

我認爲他需要一個批次而不是一個bash文件:) – weberik

+0

對不起,沒有正確地讀取這個問題 – rgunning

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 
)