ワードやエクセル、パワーポイントを含んだファイルを対象に特定文字が含まれているファイルだけを収集する
テキストファイルだけじゃない!マイクロソフトオフィスのファイルまで含んだファイル収集プログラムを作成できる
「ファイル内容に特定文字が含まれているファイルをコピーする」では、ファイルの内容をチェックして指定した単語が含まれているファイルだけを集めるプログラムを作りました。
しかし、このプログラムで対象となるファイルはテキストファイルなど中身は文章だけのような単純な構造を持ったファイルのみでした。マイクロソフトオフィスのワードやエクセル、パワーポイントは例え指定した単語が含まれていたとしても、このプログラムでは処理対象にすることができませんでした。
ここでは、ワードやエクセル、パワーポイントも処理の対象に加えたファイル収集プログラムを作成していきます。
・マイクロソフトオフィスの内容をテキスト化して何かしらの処理を行いたいけどやり方が分からない人
指定単語を含んだファイル収集プログラムを作ろう
指定単語を含んだファイル収集プログラムを作っていきましょう。基本的には、「ファイル内容に特定文字が含まれているファイルをコピーする」で作成したプログラムを改良していくので、まだこちらの記事を読んでない人は先に読んでからの方が好ましいです。
前回と同様にWindowsコマンドプロンプトのバッチファイルというプログラムを使っていくのですが、それにプラスして今回は「doctotext」というソフトを使います。「ワード・エクセル・パワーポイントをテキストファイルへ変換できるソフト」でインストールから設定までを説明していますので、まずはそちらをお願いします。
doctotextはマイクロソフトオフィスのワードやエクセル、パワーポイントの内容をテキストファイルに変換することができます。Windowsコマンドプロンプトでは、基本的にテキストファイルのような単純な構造のファイル内容しか読むことができないので、doctotextソフトを使って一度ワードなどに書かれた文章をテキストファイルに直して処理するのです。
では、プログラムを紹介しましょう。以下のコードを「Xに関連するファイルを収集(MSO対応).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 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
@echo off setlocal enabledelayedexpansion rem ユーザから検索したいワードを受け取る set /p moji="検索したいワードを入力してください:" rem ユーザから検索対象フォルダを受け取る set /p folder="検索対象フォルダを指定してください:" rem 検索したいワード名のフォルダが存在しない場合 if not exist %moji% mkdir %moji% rem フォルダを移動 cd %folder% rem doctotextの実行コマンドの絶対パス set doctotext_exe="C:\Programs\doctotext-4.0.1512-win64\doctotext\doctotext.exe" rem 対象フォルダ内のファイル内容をチェックして指定単語が含まれているファイルをコピー for /r %%n in (*.*) do ( rem マイクロソフトオフィスファイルだったらテキストファイルに変換する set true_false=false if "%%~xn" == ".doc" set true_false=true if "%%~xn" == ".docx" set true_false=true if "%%~xn" == ".ppt" set true_false=true if "%%~xn" == ".pptx" set true_false=true if "%%~xn" == ".xls" set true_false=true if "%%~xn" == ".xlsx" set true_false=true if "%%~xn" == ".xlsm" set true_false=true if !true_false! == true ( !doctotext_exe! %%n > tmp.tmp2 rem 文字コードを修正 start /min /wait cmd /c chcp 65001 ^& ^( set /p x=""^<nul ^& cmd /u /c type tmp.tmp2 ^) ^>tmp.tmp3 start /min /wait cmd /c chcp 932 ^& cmd /c type tmp.tmp3 ^>tmp.tmp ) else ( copy %%n tmp.tmp ) rem 指定単語をファイルから検索 findstr !moji! tmp.tmp > tmp.txt rem 指定単語が含まれている場合「tmp.txt」のサイズは0BTより大きくなる for %%i in (tmp.txt) do ( if not %%~zi equ 0 ( copy /y %%n %~dp0\%moji% ) ) del tmp.txt del tmp.tmp del tmp.tmp2 del tmp.tmp3 ) echo. echo "%moji%"を含むファイルをコピーしました。 pause endlocal |
注意するのは、18行目の「doctotext.exe」の場所です。これは個人のパソコンによって保存場所が違う可能性があるので、自分の設定を確認し必要があれば書き換えてください。
さて、指定単語を含んだファイル収集プログラムはこれで完成です。あとは、動作テスト用のファイルとフォルダを作っていきましょう。私は「Xに関連するファイルを収集(MSO対応).bat」と同じ場所に「対象フォルダ」というフォルダを作り、その中に以下のようなファイル構成でテスト環境を作成しました。
∟自動化を含んでいない①.txt
∟自動化を含んでいない②.txt
∟自動化を含んでいないワード.docx
∟自動化を含んでいる①.txt
∟自動化を含んでいる②.txt
∟自動化を含んでいるパワーポイント.pptx
∟自動化を含んでいるワード.docx
∟サブフォルダ[フォルダ]
∟自動化を含んでいない①-111.txt
∟自動化を含んでいない②-222.txt
∟自動化を含んでいないパワーポイント-PPP.pptx
∟自動化を含んでいる①-111.txt
∟自動化を含んでいる②-222.txt
∟自動化を含んでいるパワーポイント-PPP.pptx
∟自動化を含んでいるワード-WWW.docx
少し作り過ぎたかもしれません…。
ファイルの種類はワードやパワーポイント、普通のテキストファイルなど様々ですが、「自動化を含んでいる」という言葉があるファイルは、その名の通り内容に「自動化」という単語を含んでいます。
では、「Xに関連するファイルを収集(MSO対応).bat」を実行してみましょう。ダブルクリックです。
ファイル内容に含んでいて欲しい単語と検索対象をなるフォルダを入力し(上の画像に入力例を示します)、エンターを押しましょう。すると、プログラムがファイルを検索し始めます。下の画像のようになれば検索終了です。
エンターを押して、画面を消します。
さて、ファイルはどこに集められたのでしょうか。それは、「Xに関連するファイルを収集(MSO対応).bat」と同じ場所に指定した単語の名前のフォルダが作成されそこにファイルが集められています。
「自動化」フォルダの中を覗くと、
このように、「自動化」という単語を含んでいるファイルだけが集められていることが分かりますね。
おわりに
このようなパソコン作業に関しての自動化プログラムを自分で作成できるようになりませんか?今までのメンドクサイ、退屈な作業を一瞬で終わらせることができるかもしれませんよ。
プログラムをやったことがない人でも全く問題ありません。むしろ、この機会にプログラミングを学ぶチャンスです。そのくらいパソコン操作の自動化プログラムは初学者のテーマとして優れていると思っています。
興味のある方は「パソコン作業自動化・効率化の技術習得レッスン」を覗いてみてくださいね。
自動化プログラムの作成を依頼しませんか?
幣サイトでは、Windowsパソコンの自動化プログラムの作成サービスを行っています。
本サービスの特徴は、
・安価な値段
・個人から法人までどなたでも対応
・お客様の要望を全力で実現
です。
安いからといって、決して手は抜きません。
まずは、下のボタンからWindowsパソコンの自動化プログラムの作成サービスの詳細をご確認ください。