2012-08-04 28 views
1

我在這裏要完成的是從該文件的最後一行中提取數據ftp://ftp.nhc.noaa.gov/atcf/tcweb/invest_al902012.invest。我設法下載並通過.bat文件將其保存爲script.txt文件。我現在想從文件的最後一行提取緯度(13.5N)和經度(27.2W)以及壓力(1009),並將其寫入一個新文件。然後,我使用這段代碼來完成想要:使用.bat文件從最後一行文本文件中提取某些字符

@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部分的概念。任何幫助是極大的讚賞。

回答

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聲明分隔符,因爲當值有時是空白的,有時不是可以甩開令牌計數。

+0

這非常完美,非常感謝! – USTropics 2012-08-04 18:29:12

相關問題