こんにちは。 で始まる複数の行を含むテキスト ファイルを検索するバッチ スクリプトを作成する方法を知りたいです*==============
。このような行の最後の出現を見つけて、スクリプトの残りの部分でそれ以降のすべてを使用することを望みます。
現在、私for /F "tokens=*" %%A in (%file%.txt) do ( [process] %%A )
は各行でスキャンするために使用しています。
何か案は?
ありがとう
こんにちは。 で始まる複数の行を含むテキスト ファイルを検索するバッチ スクリプトを作成する方法を知りたいです*==============
。このような行の最後の出現を見つけて、スクリプトの残りの部分でそれ以降のすべてを使用することを望みます。
現在、私for /F "tokens=*" %%A in (%file%.txt) do ( [process] %%A )
は各行でスキャンするために使用しています。
何か案は?
ありがとう
この行のファイルをスキャンすることもできますが (現在行っているように)、直接処理する代わりに、以下の行を*==============
何らかの形で (たとえば一時ファイルに) 保存することもできます。そのような別の行を見つけた場合は*==============
、それまでに保存したものをすべて削除し、以下の行を再度保存してください。その下のすべてを保存することを含む最後の行*==============
になり、ファイルの最後に到達するため、最後のブロックのみが一時ファイルに残ります。*==============
これで、ファイルを処理して、最後の行より下のデータのみが含まれていることを確認できます。
コードは次のようになります。
SETLOCAL EnableDelayedExpansion
for /F "tokens=*" %%A in (%file%.txt) do (
SET currentline = %%A
SET currentstring=!currentstring~0,15!
IF !currentstring!==*============== (
TYPE NUL > tempFile.txt
) ELSE (
ECHO %%A>>tempFile.txt
)
)
::process the data from tempFile.txt
コマンドを使用findstr
して、で始まる行を見つけて*==============
最後の行の番号を取得し、コマンドskip
のオプションでそのような番号を使用できます。for
rem Get the line number of the last line that start with "*=============="
for /F "delims=:" %%a in ('findstr /N "^\*==============" %file%.txt') do set lastLine=%%a
rem Process the file from the next line to that one on
for /F "skip=%lastLine% tokens=*" %%A in (%file%.txt) do ( [process] %%A )