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 に答える