【BAT】テキストファイルの「空白行」をすべて削除したい!ドラッグアンドドロップでバッチに放り込み「空白行」を全て消すスクリプト例!

Windows

こんにちは!今回はテキストファイルの「空白行」を一瞬ですべて消し去るバッチファイルを作成する方法を紹介します!

「空白行」を消したいとき、テキストファイルを開いて手作業で消していくのは大変ですよね?
数行くらいなら大したことありませんが、「削除したい」というシチュエーションでは大量にあるのが普通ですね。

「空白行を消すだけ」と、一見簡単そうに思えますが、いざスクリプトを考え始めると「どうすればいいの?よくわからないから手作業で消そう・・・」と苦しい思いをされた方もいらっしゃると思います。

今回は、そんな「空白行を消すバッチスクリプト」を作成例を紹介していきたいと思います!

やりたいこと

●「空白行」を消したい「テキストファイル」を、「バッチファイル」に「ドラッグ&ドロップ」するだけで「空白行」をすべて削除する。

※テキストファイル=.txtや.logの拡張子などの普通のテキストファイルです。ワードやエクセルファイルとは違いますので、注意してください。

スクリプト例

@echo off
cd /d %~dp0

findstr /R . %1>>%~n1_Result%~x1

使い方

1.「コードをコピー!」でコピーしたコードを新規作成したテキストファイルに貼り付ける

2.拡張子を「.bat」にして保存する

3. 「2.」で作成した「~.bat」ファイルに「空白行」を削除したいテキストファイルをドラッグアンドドロップする

すると、テキストファイルがあるフォルダと同じフォルダに、「空白行」が全て削除されたファイルが作成されます。

解説

今回のメインは「findstr」コマンドで「正規表現を扱う」ことです。

最終的には、「ドラッグアンドドロップしたテキストファイルのうち、何でもいいのでとにかく1文字を表す正規表現が含まれる行だけを抽出する」コマンドになります。

コマンドや用語の詳細を以下で解説します。

正規表現「.」とは

例えば、文章の中から「3ケタの数字」が存在するか調べたいとき、普通の条件分岐であれば、その文章の中に「000 または 001 または 002 または 003 または 004 または~...999 が存在するか」と長々と1000回も調べる必要があります。

これを、「3ケタの数字」である1000パターンを集約して、「\d{3}」や「[0-9]{3}」という特別な表現でたった1回で検索できるのが”正規表現”です。

今回使用しているのは「.」という”正規表現”で、「.」は「何でもいいのでとにかく1文字」を表します。

正規表現についてはまた別の記事で詳しく解説してみたいと思います。

Findstrで文字を探す

「findstr」コマンドは、自分が決めた文字が含まれる行を探すコマンドです。
言い方を変えると、文字以外は見つけません。そのため、空白行には文字が無いので無視されるというわけですね。

findstr /R . %1

「findstr」=自分が決めた「文字」または「正規表現」の、調べたいものが含まれる文章の行を「テキストファイル」から抽出します。

findstr /R . %1

「/R」=「findstr」コマンドのオプションです。「文字」ではなく「正規表現」で「テキストファイル」を検索するようにするオプションです。

findstr /R . %1

「.」=上に書いた通り「何でもいいのでとにかく1文字」を意味する「正規表現」です。

findstr /R . %1

「%1」=実行したバッチファイルのうち、1個目の追加設定(第一引数と呼びます)です。「.bat」ファイルにファイルをドラッグアンドドロップしたとき、この「1個目の追加設定(第一引数)」になるので、ここでは「ドラッグアンドドロップしたテキストファイル」を指します。


つまり、「findstr /R . %1」は「ドラッグアンドドロップしたテキストファイル(%1)のうち、何でもいいのでとにかく1文字(.)を表す正規表現(/R)が含まれる行だけを抽出する(findstr)」コマンドとなります。

出来上がったファイルを、元の名前に「_Result」を付けて保存する

最後に保存する部分です。ドラッグアンドドロップをした元のファイル名に文字を追記する形にしています。

findstr /R . %1>>%~n1_Result%~x1

>>」はリダイレクト記号というもので、「>>」の先に指定されたファイルに実行結果を追記するものです。この場合ですと「%~n1_Result%~x1」というファイルにfindstrの結果を追記していきます。

「%~n1」はドラッグアンドドロップした、元のファイル名部分、「%~x1」は元の拡張子を示します。

[元のファイル名] _Result [元の拡張子]

という形で、自動的にバッチ内で判別して保存させています。
※追記の形をとっていますので、すでに同じファイル名で保存されている場合、その後ろへ追記されてしまうので気を付けてください。

また、こちらの記事でも「%~」について解説していますので、参考にしてください。

あとがき

テキストファイルから「空白行」を取り除く手法のご紹介をさせていただきました。

空白行を取り除くだけなので新しくソフトを入れるほどではないですが、手作業ではできればやりたくない何とも言えない作業ですよね・・・。

本来であれば、元からそういった作業が発生しないように、あらかじめテキストを整形しながら作成したり、何らかのプログラムやシステムであれば出力ファイルを調整しておきたいところですね。(とはいえ、気づくと空白だらけのテキストが出来上がったりしていますが^^;

サクッと「空白行」を取り除きたい作業が発生した場合、ぜひ今回作成したバッチを使ってみてください!

何かのお役に立てれば幸いです。

コメント

Translate »
タイトルとURLをコピーしました