1

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

4

1 回答 1

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 语句中,因为当值有时为空白有时不是时,这会导致记号计数失效。

于 2012-08-04T18:17:23.217 回答