最近、再び Visual Basicを引っ張り出してきて、プログラムをいじくっている。何を作っているかはまだ明かしたくないが、その中である程度汎用性のある処理を作ったので、メモ代わりに残すことにした。
私もこんなものを自作するのは面倒くさいので、どこかにあるだろうとWebを幾つかのキーワードで検索したが、どこかのサポート掲示板で、「教えて」という書込みは見たがどうすればいいのかのコメントはなかったので仕方なく自作してみました。何とか動くようになったので公開します。
操作としては、 「
Do」ボタンを押すと、まずテキストボックスで指定されたフォルダー以下のファイルツリーを作って、FTree.txt というファイルに書き出します。
次に、全フォルダ/ファイルが削除されますと言う警告を出した後、全てのフォルダ/ファイルを削除します。
Windowsの機能としては、フォルダを選択して Delボタンを押すか ファイル → 削除 と操作すれば良いだけの話で、何と言うことはありませんが、これをプログラムとしてどう組むかというのが問題です。
ファイルツリーを作成するサンプルは幾つか見たことがあるので、これを利用してその中にファイルの削除と、空になったフォルダーの削除を組み入れましたが、ポイントは一番下位のフォルダーを削除した後、再帰的にその親フォルダーを遡って削除していくことです。子フォルダーが2つあるような場合、片方の子フォルダーを削除してももう片方の子フォルダーが残っているのでそのフォルダーを再度 最下位まで下ってから順次上位のフォルダーを削除するようになっています。

右図のように Form にテキストボックスとコマンドボタンを配置し、コーディングを
こんな感じで記述します。

で、わざわざこんな複雑なファイルツリーを作ってから実行し、ファイルツリーを作成すると
こうなります。
それが全て綺麗に削除できるのを確認しました。
あまり正確ではありませんが、フローは大体
こんな感じです。