【问题标题】:Extracting certain characters from the last line of text file using a .bat file使用 .bat 文件从文本文件的最后一行中提取某些字符
【发布时间】:2012-08-04 16:52:29
【问题描述】:

我在这里尝试完成的是从该文件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 部分的概念。任何帮助是极大的赞赏。

【问题讨论】:

    标签: parsing batch-file text-extraction


    【解决方案1】:

    文件以逗号分隔,因此让 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 语句中,因为当一个值有时为空白有时不是时,这会导致记号计数失效。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多