• ベストアンサー

batファイル 行数、ファイルの下からn行の取得

すいません、batファイルについて質問させてください。 ・ファイルの中の行数 ・ファイルの中から下からn行を取得 上記二つのやり方を模索しております。 お解りの方がいらっしゃいましたら、是非教えてください。 よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4901/10362)
回答No.3

#2です。 >バッチファイルの中で、 >find /c /v "" < filename >の値を変数にsetするのはどうすればよいでしょうか? あの、書いてありますが。 rem まず全体行数を求める for /f %%A in ('find /c /v "" ^< %FILE%') do set L=%%A < の前に ^ をつけるのを忘れないように。

noname#16220
質問者

お礼

・・・ほんとですねぇ(汗) すいません、あわててました m(__)m ありがとうございました。

その他の回答 (2)

  • notnot
  • ベストアンサー率47% (4901/10362)
回答No.2

>・ファイルの中の行数 find /c /v "" < filename で表示されます。 >・ファイルの中から下からn行を取得 バッチフィルを作る必要があります。 set FILE=入力ファイル名 set N=末尾から取得する行数 set OUT=出力ファイル名 rem まず全体行数を求める for /f %%A in ('find /c /v "" ^< %FILE%') do set L=%%A rem 先頭から読み飛ばす行数を求める set /a SKIP=L-N if %SKIP% lss 0 set SKIP=0 rem 読み飛ばして出力ファイルに格納 more +%SKIP% %FILE% > %OUT%

noname#16220
質問者

お礼

ありがとうございます。 バッチファイルの中で、 find /c /v "" < filename の値を変数にsetするのはどうすればよいでしょうか?

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.1

出来ないことは無いですが、VBScriptなどを使ったほうが圧倒的に楽ですよ。 で、次の方法も、NT系のみです。 ファイル名は適当に変えてください。 ------------------------------ set FILENAME=C:\BOOT.INI set TEMPFILE=C:\TEMP.TXT set OUTFILE=C:\OUT.TXT set GETLINELAST=2 :LOOP1 for /f %%i in (%FILENAME%) do call :JUMP1 echo %FILENAME%の行数は %LINE% pause goto LOOP2 :JUMP1 set /A LINE=%LINE%+1 goto END :LOOP2 set /A SKIP=%LINE% - %GETLINELAST% for /f "tokens=1* delims=," %%i in (%FILENAME%) do echo %%i>%TEMPFILE%& call :JUMP2 pause goto END :JUMP2 set /A COUNT=%COUNT%+1 if %SKIP% GEQ %COUNT% goto END type %TEMPFILE%>>%OUTFILE% goto END :END

noname#16220
質問者

お礼

ありがとうございます。 早速やってみます。

関連するQ&A