我有几个文本文件,文件头不感兴趣,但有一些相关数据。我想要一个包含所有重要数据的新文件:
例子:
File1 包含文本:
Created on 02.02.2016
Country: Chile
Figure of Station: CAL
Frequency: 220 Hz
Messuring: 15 hours
File2 包含文本:
Created on 02.02.2016
Country: Chile
Figure of Station: GUA
Frequency: 220 Hz
Messuring: 14 hours
我想要一个包含所有重要数据的新 csv,如下所示:
CAL 220 Hz 15 hours
GUA 220 Hz 14 hours
是否可以使用批处理文件来执行类似的操作?
我知道复制.csv
全部.txt
,但这在这里不起作用。
这是我也有的批处理脚本。
@echo off
setlocal EnableDelayedExpansion
if exist result.csv del result.csv
for %%f in (*.txt) do (
set i=0
for /F "delims=" %%l in (%%f) do (
set /A i+=1
set line!i!=%%l
)
echo %%f, !line1!, !line2!, !line3!, !line4!, !line5!, >> result.csv
)
答案1
我想要一个包含所有重要数据的新文件
我已修改您的批处理文件以产生您想要的结果。
使用以下批处理文件(test.cmd):
@echo off
setlocal EnableDelayedExpansion
if exist result.csv del result.csv
for %%f in (file*.txt) do (
set _line=
rem we don't need the first 2 lines so skip them
rem we only need the data after the :
rem so use : as the delimeter and get the rest of the tokens after the delimeter
for /f "skip=2 tokens=2* delims=:" %%l in (%%f) do (
set _value=%%l
rem strip off the space that is after the : and build up the output line
set _line=!_line!!_value:~1!
)
rem write the output line to the file
echo !_line! >> result.csv
)
endlocal
笔记:
- 更改
file*.txt
以匹配您的文本文件。
使用示例:
F:\test>type file*.txt
file1.txt
Created on 02.02.2016
Country: Chile
Figure of Station: CAL
Frequency: 220 Hz
Messuring: 15 hours
file2.txt
Created on 02.02.2016
Country: Chile
Figure of Station: GUA
Frequency: 220 Hz
Messuring: 14 hours
F:\test>test
F:\test>type result.csv
CAL 220 Hz 15 hours
GUA 220 Hz 14 hours
F:\test>
进一步阅读
- Windows CMD 命令行的 AZ 索引- 与 Windows cmd 行相关的所有事物的绝佳参考。
- 为了- 有条件地对多个文件执行命令。
- 对于/f- 循环命令以执行另一个命令的结果。
- 变量- 提取变量的一部分(子字符串)。