[前の記事]« FORでの処理を、パラメータに「%」や「!」があっても誤動作しないようにしたい
[次の記事]FTP実行中のエラーの有無をバッチ処理側で判別するには »

関連オンラインソフト配布サイト:
Vector>ダウンロード(top) |>MS-DOSまたは汎用 | >WindowsVista/XP/2000/NT

▲カテゴリー「FIND,FINDSTR,SORT…テキストファイル内文字列の操作」索引へ
▲カテゴリー「文字列の操作」索引へ

書き込まれた数値が条件に合致する行だけ別ファイルに出力したい

669.
ファイル内容出力
2005年08月03日(水) 14時59分
waka
●DOS/Windowsのバージョン↓
Windows2000Server
(以下ご自由に質問文をお書きください)

はじめまして、どなたかご存知でしたら
教えてください。

テキストファイルに、下記のようなデータが
15分おきに吐き出されます。1か月分のデータが
1ファイルとして保存されます。

(空白)2005年07月01日 00時16分33秒 406.66
(空白)2005年07月01日 00時31分33秒 406.215

1ヵ月後に、一番右側の値が400以上の行だけを
別ファイルに出力したいな、と思っております。

上記の仕組みはDOSコマンドで行うのは難しいのでしょうか?
どなたか良い案がありましたら教えてください。
670.
Re:ファイル内容出力
2005年08月03日(水) 16時10分
じゃく
こんにちは。

>テキストファイルに、下記のようなデータが
>15分おきに吐き出されます。1か月分のデータが
>1ファイルとして保存されます。
>
>(空白)2005年07月01日 00時16分33秒 406.66
>(空白)2005年07月01日 00時31分33秒 406.215
>
>1ヵ月後に、一番右側の値が400以上の行だけを
>別ファイルに出力したいな、と思っております。
>
簡単なサンプルです。
1ヶ月後毎のファイルを infile.txt 別ファイルを outfile.txt とします。
小数点以下の切り捨てしなくてもなんか動いています。(いいのかな)

@echo off
if exist outfile.txt del outfile.txt
for /F "delims=" %%a in ( infile.txt ) do call :sub %%a
exit /b
:sub
if %3 GEQ 400 echo %*>>outfile.txt
goto :EOF
674.
Re:ファイル内容出力
2005年08月03日(水) 16時36分
じゃく
自己レスです。

>>テキストファイルに、下記のようなデータが
>>15分おきに吐き出されます。1か月分のデータが
>>1ファイルとして保存されます。
>>
>>(空白)2005年07月01日 00時16分33秒 406.66
>>(空白)2005年07月01日 00時31分33秒 406.215
>>
>>1ヵ月後に、一番右側の値が400以上の行だけを
>>別ファイルに出力したいな、と思っております。
>>
>簡単なサンプルです。
>1ヶ月後毎のファイルを infile.txt 別ファイルを outfile.txt とします。

他の方法を考えつきました。こちらの方が早いかな。

findstr /R /C:"秒 [4-9][0-9][0-9]" /C:"秒 [1-9][0-9]*[0-9][0-9][0-9]" infile.txt > outfile.txt
675.
Re:ファイル内容出力
2005年08月03日(水) 17時19分
waka
じゃくさん、こんにちは。

レスありがとうございました。
大変役立ちました。

1年位前からずっと悩んでいたので、この悩みが
わずか1時間で解決してしまったのが・・・、ですが。
もっと早く聞けばよかったです。
本当にありがとうございました。

>自己レスです。
>
>>>テキストファイルに、下記のようなデータが
>>>15分おきに吐き出されます。1か月分のデータが
>>>1ファイルとして保存されます。
>>>
>>>(空白)2005年07月01日 00時16分33秒 406.66
>>>(空白)2005年07月01日 00時31分33秒 406.215
>>>
>>>1ヵ月後に、一番右側の値が400以上の行だけを
>>>別ファイルに出力したいな、と思っております。
>>>
>>簡単なサンプルです。
>>1ヶ月後毎のファイルを infile.txt 別ファイルを outfile.txt とします。
>
>他の方法を考えつきました。こちらの方が早いかな。
>
>findstr /R /C:"秒 [4-9][0-9][0-9]" /C:"秒 [1-9][0-9]*[0-9][0-9][0-9]" infile.txt > outfile.txt
676.
Re:ファイル内容出力
2005年08月03日(水) 17時57分
otn
>小数点以下の切り捨てしなくてもなんか動いています。(いいのかな)

小数点があると、数値としてではなく、文字列としての比較になるので、
if 99.99 GEQ 400
が真になっちゃいます。
677.
Re:ファイル内容出力
2005年08月03日(水) 18時06分
じゃく
>>小数点以下の切り捨てしなくてもなんか動いています。(いいのかな)
>
>小数点があると、数値としてではなく、文字列としての比較になるので、
>if 99.99 GEQ 400
>が真になっちゃいます。
>
otnさん、指摘ありがとうございました。
どうも、詰めが甘いですね。
ということで findstr のほうを使ってください>wakaさん
678.
Re:ファイル内容出力
2005年08月03日(水) 18時21分
じゃく
>>>小数点以下の切り捨てしなくてもなんか動いています。(いいのかな)
>>
>>小数点があると、数値としてではなく、文字列としての比較になるので、
>>if 99.99 GEQ 400
>>が真になっちゃいます。
>>
>otnさん、指摘ありがとうございました。
>どうも、詰めが甘いですね。
>ということで findstr のほうを使ってください>wakaさん
何度も済みません>ALL
一応、見直してみたので訂正版も載せておきます。

@echo off
if exist outfile.txt del outfile.txt
for /F "delims=" %%a in ( infile.txt ) do call :sub %%a
exit /b
:sub
for /F "delims=." %%x in ('echo %3') do if %%x GEQ 400 echo %*>>outfile.txt
goto :EOF
681.
Re:ファイル内容出力
2005年08月04日(木) 09時39分
waka
>>>>小数点以下の切り捨てしなくてもなんか動いています。(いいのかな)
>>>
>>>小数点があると、数値としてではなく、文字列としての比較になるので、
>>>if 99.99 GEQ 400
>>>が真になっちゃいます。
>>>
>>otnさん、指摘ありがとうございました。
>>どうも、詰めが甘いですね。
>>ということで findstr のほうを使ってください>wakaさん
>何度も済みません>ALL
>一応、見直してみたので訂正版も載せておきます。
>
>@echo off
>if exist outfile.txt del outfile.txt
>for /F "delims=" %%a in ( infile.txt ) do call :sub %%a
>exit /b
>:sub
>for /F "delims=." %%x in ('echo %3') do if %%x GEQ 400 echo %*>>outfile.txt
>goto :EOF
>
>

じゃくさん、otnさんありがとうございました。ちょっと、試しに動かしてみます。本当に役立ちました~。
 
 


カテゴリー「FIND,FINDSTR,SORT…テキストファイル内文字列の操作」索引へ
カテゴリー「文字列の操作」索引へ

 

カテゴリー一覧

FPCU/FPCDIY QUICK LINK online
この上の各ジャンル名をクリックすると、下のウィンドウが切り替わります▼


=リンク集のインデックスはこちら=

資料書籍

About

2005年08月03日 23:11に投稿されたエントリーのページです。

ひとつ前の投稿は「FORでの処理を、パラメータに「%」や「!」があっても誤動作しないようにしたい」です。

次の投稿は「FTP実行中のエラーの有無をバッチ処理側で判別するには」です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。

This site is powered by Six Apart
Movable Type 3.33-ja
このブログについて | 運営:有限会社メディアポート