[前の記事]« 通常の展開と遅延展開のタイミング
[次の記事]SETした環境変数が表示できない »

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

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

空行(改行だけの行)を削除するには

461.
特定行の削除
2005年05月13日(金) 14時50分
K.Miura
●DOS/Windowsのバージョン↓

Microsoft Windows 2000 [Version 5.00.2195]

(以下ご自由に質問文をお書きください)

いつも参考にしておりますが、初めての投稿です。

【質問内容】
ファイルにn件のレコードが有ります。
最終行に改行だけのレコードがあります。
この、「改行だけのレコード(空行)」の行を削除したいです。
(別ファイルに改行以外のレコードを出力したい)
#現時点では、「改行だけのレコード(空行)」=「最終行」ですので
#最終行の削除でも構いません。

単純なことかも知れないですが教えて頂ければありがたいです。
よろしくお願い致します。
465.
Re:特定行の削除
2005年05月13日(金) 15時44分
otn
>●DOS/Windowsのバージョン↓

>Microsoft Windows 2000 [Version 5.00.2195]

>(以下ご自由に質問文をお書きください)

>いつも参考にしておりますが、初めての投稿です。

>【質問内容】
>ファイルにn件のレコードが有ります。
>最終行に改行だけのレコードがあります。
>この、「改行だけのレコード(空行)」の行を削除したいです。
>(別ファイルに改行以外のレコードを出力したい)
>#現時点では、「改行だけのレコード(空行)」=「最終行」ですので
>#最終行の削除でも構いません。

>単純なことかも知れないですが教えて頂ければありがたいです。
>よろしくお願い致します。

「ファイル中の空行をすべて削除する」でよければ、
(for /f "delims=" %%A in (filename.txt) do echo %%A)>outfile.txt

ファイルの途中に空行がありそれはそのままにしたいのならバッチでは無理です。VBS等を使う必要があります。
467.
Re2:特定行の削除
2005年05月13日(金) 16時18分
K.Miura
早々の返信有り難う御座いました。

>「ファイル中の空行をすべて削除する」でよければ、
>(for /f "delims=" %%A in (filename.txt) do echo %%A)>outfile.txt

有り難う御座いました。
今回は、希望通りに出力が出来ました。

>ファイルの途中に空行がありそれはそのままにしたいのならバッチでは無理です。VBS等を使う必要があります。

最終行の取得とかはVBS等の方が便利ということですね。
勉強してみます。
468.
Re2:特定行の削除
2005年05月13日(金) 19時30分
じゃく
otnさんこんばんは。

>>【質問内容】
>>ファイルにn件のレコードが有ります。
>>最終行に改行だけのレコードがあります。
>>この、「改行だけのレコード(空行)」の行を削除したいです。
>>(別ファイルに改行以外のレコードを出力したい)
>>#現時点では、「改行だけのレコード(空行)」=「最終行」ですので
>>#最終行の削除でも構いません。
>>
>>単純なことかも知れないですが教えて頂ければありがたいです。
>>よろしくお願い致します。

>「ファイル中の空行をすべて削除する」でよければ、
>(for /f "delims=" %%A in (filename.txt) do echo %%A)>outfile.txt

>ファイルの途中に空行がありそれはそのままにしたいのならバッチでは無理です。VBS等を使う必要があります。

この書き込みと、otn さんの別の書き込み↓

>find /c /v "" filename でわかります。
>ただし、ファイル末尾に空行があると数字が狂います(1少なくなる)。


を見ていて、以下のような記述でバッチによりファイルの途中に
空行がありそれはそのままにして末尾の空行を削除するものを
作ってみました。
うまく動作しているのか半信半疑ですが、いかがでしょう。

find /v "" filename.txt>tmp.txt
more +2 tmp.txt>outfile.txt
del tmp.txt

なぜか type filename.txt | find /v "" >outfile.txt ではうまくいきませんでした。
469.
Re3:特定行の削除
2005年05月13日(金) 19時55分
otn
>を見ていて、以下のような記述でバッチによりファイルの途中に
>空行がありそれはそのままにして末尾の空行を削除するものを
>作ってみました。
>うまく動作しているのか半信半疑ですが、いかがでしょう。

>find /v "" filename.txt>tmp.txt
>more +2 tmp.txt>outfile.txt
>del tmp.txt

find /c /v のコメントを書き直し投稿したときに気づいたんですが、まあ用件確認の返答待ちでいいかと再コメントは止めておきました。

find /v "" < filename.txt > outfile.txt

でいけると思います。

>なぜか type filename.txt | find /v "" >outfile.txt ではうまくいきませんでした。

確かに、パイプだとなぜか駄目ですね。いや、駄目と言うか正しい動きと言うか難しいところ。

逆に、行数カウントは、
type filename | find /c /v ""
で、末尾に空行があってもOKになりました。
474.
ありがとうございました
2005年05月16日(月) 12時24分
K.Miura 
見るのが遅くなりました。
じゃく さん、otn さん、ありがとうございます。
とても勉強になりました。
 
 


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

 

カテゴリー一覧

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


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

資料書籍

About

2005年05月13日 21:52に投稿されたエントリーのページです。

ひとつ前の投稿は「通常の展開と遅延展開のタイミング」です。

次の投稿は「SETした環境変数が表示できない」です。

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

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