サブフォルダのファイルを削除するには?

解決


たかのん  2014-03-20 19:22:59  No: 46145

サブフォルダにあるjpgファイルだけを削除したいと思っています。

フォルダA
  |
  |——フォルダB
  |  |    b.jpg b.txt b.csv
  |  |——フォルダBB
  |            bb.jpg bb.txt bb.csv
  |——フォルダC
            c.jpg c.txt c.csv

SHFileOperationを使用して「フォルダA\*.jpg」を削除としてみたのですが
うまくいきませんでした。
良い方法を教えていただけますでしょうか?


DEKO  2014-03-21 20:19:49  No: 46146

こんな感じでしょうか。
# 多分 Delphi 2010 以降

uses
  ..., IOUtils;

var
  FileName: string;
begin
  for FileName in TDirectory.GetFiles('Z:\', '*.jpg', TSearchOption.soAllDirectories) do
    TFile.Delete(FileName);
end;


DEKO  2014-03-21 20:23:59  No: 46147

言うまでもない事かもしれませんが、
サブフォルダを走査してファイルを削除する時は、
パスのチェックを入念に行って下さい。

…でないと、DocuWorks みたいな事になりますので。
http://news.fujixerox.co.jp/news/2014/001059/


たかのん  2014-03-21 22:32:52  No: 46148

Delphi2010以降からはTDirectoryというクラスが存在するのですね。
勉強になりました。
もし、Delphi2010より前のバージョンでサブフォルダ内にある
任意の拡張子のファイルを削除するとなると、やはり再帰的に
サブフォルダ内を探していくしかないのでしょうか?


DEKO  2014-03-22 05:49:13  No: 46149

> もし、Delphi2010より前のバージョンで
再帰でしょうね。


たかのん  2014-03-25 22:13:28  No: 46150

ご教授ありがとうございました。
DEKO様から説明して頂いた内容で作成したいと思います。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加