指定した文字がファイルに書いてあるファイルだけをリスト化しよう
例えば、”自動化”という文字が書かれてあるファイルだけを集めてくるとか
ファイルを探す方法は様々なものがあります。「ファイルは更新日時順に並べて整理しよう」ではファイルの更新日時に着目してファイルを検索しました。
ここでは、ファイルの中に書いてある内容をみて、指定した文字が書かれてあるファイルだけをリスト化する自動化を行っていきます。例えば、たくさんのファイルの中から”自動化”に関連のあるファイルを探したいとき、ファイル内に”自動化”という単語が含まれているファイルだけをリスト化するといった感じです。
・いろんなファイル整理の方法を知りたい人
【ここでは、こんな自動化ができる!を動画で説明】
とにかく使ってみる
まずは、とにかく上の動画でみたような操作を行えるようにしてみましょう。細かいことは抜きです。まずは、探したいファイル群が入っているフォルダに移動してください。こここでは、下の図のようなフォルダでやってみようと思います。
「自動化を含んでいない①~③.txt」は”自動化”という単語をファイル内の文章に含んでいないファイルです。一方、「自動化を含んでいる①~③.txt」は”自動化”という単語が文章中に含まれています。特にこのファイル名にする必要はありません。自分の好みでファイルを作成してください。最低、検索文字を含んでいるファイルと含んでいないファイルの2つを用意すれば十分です。
この場所に「指定文字を含んだファイルリストを作成.bat」というファイルを新規に作成してください。拡張子が「.bat」となっていますね。これがパソコン操作の自動化には欠かせないバッチファイルというものです。
これを開き、以下のコードをコピー&ペーストします。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
@echo off setlocal enabledelayedexpansion set /p moji="検索したい言葉を入力してください:" if exist 「%moji%」を含むファイルリスト.txt del 「%moji%」を含むファイルリスト.txt for /f %%n in ('dir /b *.*') do ( findstr !moji! %%n > tmp.txt for %%i in (tmp.txt) do ( if not %%~zi equ 0 ( echo 【%%n】 >> 「!moji!」を含むファイルリスト.txt findstr /n !moji! %%n >> 「!moji!」を含むファイルリスト.txt ) ) ) echo. echo "%moji%"を含むファイルをリスト化しました。 pause del tmp.txt endlocal |
保存して閉じれば、完成です。
では、使ってみましょう。「指定文字を含んだファイルリストを作成.bat」ファイルをダブルクリックしてください。下の図のような黒い画面(コマンドプロンプト画面という)が現れたでしょうか?
「検索したい言葉を入力してください:」とあります。ここでは、”自動化”と入力してみます。入力後、「Enter」キーを押してください。
このような表示がでたら、無事完了です。何かキーを押して、終了します。
フォルダを確認すると、「「自動化」を含むファイルリスト.txt」というファイルができています。「自動化」の部分は検索した文字によって変化します。
このファイルの中身を確認しましょう。
【 】で囲まれているファイル名が検索文字(ここでは”自動化”)を含んでいるファイルです。「自動化を含んでいる①~③.txt」の3つですね。
そして、それぞれのファイル名の下に表示されているのが、検索文字を含んでいる文章です。左の数字はこの文章の行数を表示してあります。例えば一番上の「自動化を含んでいる①.txt」であれば、3行目に”自動化”を含む文章が存在するということになります。
もう少し詳しく知りたい方へ
ここでは、バッチファイル「指定文字を含んだファイルリストを作成.bat」というWindowsパソコンの自動化には欠かせない機能を使っています。バッチファイルのコード内容について詳しく知りたい方へ、簡単に説明しましょう。バッチファイルに多少知識のある方へ向けて書いています。バッチファイルに興味を持たれた方は、「バッチファイル超入門講座」でバッチファイルについて一から学ぶことができますよ。
詳しい説明はバッチファイル専門のホームページへ載せていますので、そちらをご参照ください。
もう一度、「指定文字を含んだファイルリストを作成.bat」に記述したコードを示します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
@echo off setlocal enabledelayedexpansion set /p moji="検索したい言葉を入力してください:" if exist 「%moji%」を含むファイルリスト.txt del 「%moji%」を含むファイルリスト.txt for /f %%n in ('dir /b *.*') do ( findstr !moji! %%n > tmp.txt for %%i in (tmp.txt) do ( if not %%~zi equ 0 ( echo 【%%n】 >> 「!moji!」を含むファイルリスト.txt findstr /n !moji! %%n >> 「!moji!」を含むファイルリスト.txt ) ) ) echo. echo "%moji%"を含むファイルをリスト化しました。 pause del tmp.txt endlocal |
1行目の「@echo off」は「@echo offの意味」をご覧ください。3行目の「setlocal…」と最終行の「endlocal」はペアです。これを記述しておかないと後に出てくる「for」ループの中で変数の値が変わってくれません。
5行目の「set /p」コマンドでは、ユーザーからの入力を受け付け変数「moji」に代入しています。これが、検索文字を入力する部分にあたるところですね。
7行目で既に過去に作った同名のファイルがある場合は削除しておきます。
9行目~18行目は現在いるフォルダ内のファイル名を「dir /b *.*」ですべて取ってきて、%%nに代入しながらループを回しています。ループ初めの「findstr」がループで回っている一つ一つのファイルから検索文字列を探し出し一時ファイル「tmp.txt」ファイルに格納するコマンドです。
12行目では、また「for」が現れますが、「tmp.txt」ファイルの中を読んで空ファイルでなかったら、すなわち検索文字が存在していたら、そのファイル名と検索文字を含んでいる1行の内容をファイルリストに書き出しています。
最後に、21行目で処理完了のメッセージを出力し、24行目で一時ファイル「tmp.txt」を削除して終了です。
終わりに
この記事を読んでいて、「テキストファイルだけしかできないの?ワードとかPDFファイルもできるの?」と思われた方のいるのではないでしょうか。
残念ながら、この方法ではワードやPDFファイルは扱うことができません。ですが、これを改良してワードやPDFファイルそしてエクセルファイルまで検索の対象にすることが可能です。
その方法については、「ワードやPDFにも使用可能な指定した文字でファイルを検索するパソコン自動化」で説明していますので、興味のある方はご覧ください。
自動化プログラムの作成を依頼しませんか?
幣サイトでは、Windowsパソコンの自動化プログラムの作成サービスを行っています。
本サービスの特徴は、
・安価な値段
・個人から法人までどなたでも対応
・お客様の要望を全力で実現
です。
安いからといって、決して手は抜きません。
まずは、下のボタンからWindowsパソコンの自動化プログラムの作成サービスの詳細をご確認ください。