使用.bat文件从文本文件的最后一行提取某些字符

时间:2012-08-04 16:52:30

标签: parsing batch-file text-extraction

我在这里要完成的是从此文件的最后一行提取数据ftp://ftp.nhc.noaa.gov/atcf/tcweb/invest_al902012.invest。我已经设法下载并通过.bat文件将其保存为script.txt文件。我现在想从文件的最后一行提取纬度(13.5N)和经度(27.2W)以及压力(1009)并将其写入新文件。然后我用这段代码做了我的一部分想:

@echo off
setlocal EnableDelayedExpansion
for /f "delims=" %%x in (script.txt) do (
    set "previous=!last!"
    set "last=%%x"
) 
echo !previous!>> "test3.txt"
for /f "delims=*" %%x in (test3.txt) do (
set line=%%x
set chars=!line:~35,-125!
echo !chars!>> "test.txt"
) 

在批量编码方面,我是文盲。这可能是非常低效的,只提取我想要的代码的纬度部分。该文件将始终包含最后一行中相同数量的字符,所以我想我只是没有理解代码的!line部分的概念。任何帮助是极大的赞赏。

1 个答案:

答案 0 :(得分:2)

该文件以逗号分隔,因此可能更容易让FOR / F将该行解析为令牌并保留您想要的那些。

这个非常简单的解决方案解析并设置每一行的值,但只记住最后一行。只要文件永远不会变大,性能应该没问题。

@echo off
for /f "tokens=7,8,10 delims=," %%A in (script.txt) do (
  set lat=%%A
  set long=%%B
  set pres=%%C
)
echo latitude=%lat%, longitude=%long%, pressure=%pres%

如果你想剥离空格,那么你可以简单地使用搜索和替换。

echo latitude=%lat: =%, longitude=%long: =%, pressure=%pres: =%

我不是简单地在FOR / F语句中包含空格作为分隔符,因为当值有时是空白而有时不是空格时,它会抛弃令牌计数。