アプリ版:「スタンプのみでお礼する」機能のリリースについて

お詳しい方アドバイスをお願いいたします。
とあるディレクトリ内の全てのファイル・ディレクトリを対象に、指定した名称以外のものは全て削除したいのですが、記述方法が良くわからずアドバイス頂けないでしょうか?

/hoge/ というディレクトリ内には、階層もバラバラで様々な名称のデータが入っていると仮定した際に、この/hoge/ 配下にある index.php という名称のファイルと、imgというディレクトリ以外は全て削除したいです。
なお、このimg内のデータも削除対象にしたいです。(もちろんこのimgの中に、さらにimgやindex.phpがあればそれらは削除対象外です)

やはりforで回して削除していく流れになるのでしょうか?解説のサイトを拝見するのですが、いまいちよくわからず…。
宜しくお願いいたします。mm

A 回答 (4件)

環境が書いてないですが、「バッチファイル」という単語からWindowsだとして回答します。



robocopy \hoge \hoge-tmp index.php img /e /move
rd /s /q \hoge
ren \hoge-tmp hoge


念のため、/move を付けず、
robocopy \hoge \hoge-tmp index.php img /e
で、希望通りか確認した方が良いかと思います。
    • good
    • 0

素人考えで言えば、


削除対象以外を全て別なディレクトリーに移動し、※1
残ったディレクトリーとフォルダーをすべて削除する、
ではどうでしょうか。

※1
移動の際にディレクトリー階層まで維持できるかどうかは不明ですが…
    • good
    • 0
この回答へのお礼

有難うございます。
データが構造に決まりが無いのと、数万、数十万あった場合を考慮したいと思うのでもう少し考えてみたいと思います。
有難うございます。

お礼日時:2022/05/31 14:35

>やはりforで回して削除していく流れになるのでしょうか?



まあ、考え方はそうなります。

自分は横着なので、
 除外したいファイルやフォルダだけをディレクトリ構造そのままに別のフォルダに複製(xcopyで移動させても良い)し、
 元のファイルをフォルダごとを削除して、
 複製したその別のフォルダの名前を削除したフォルダの名前に変更
します。
……ディスク容量が十分あるならこのほうが簡単にバッチファイルを作れます。
質問者さんならちょっと考えるだけで簡単にできるんじゃないでしょうか。

ということで、空き容量を確保したいためにファイルを削除するという目的であれば、このやり方は無視してください。本末転倒なやり方になりますからね。

・・・

実務的に作りたいということでしたら、半自動で処理することを考えてみましょう。
削除したいファイルがあるディレクトリを都度指定して、ファイル削除のバッチファイルを実行するんです。
cdコマンドでディレクトリを移動しながら、pathが通っている場所に置いた削除用のバッチファイルを実行です。
たぶん、一発で処理しようとあれこれ考えるよりも、結果的に早く処理が完了すると思います。
    • good
    • 0
この回答へのお礼

有難うございます。
なるほどです…。空き容量というわけではないです。
一発で行うのはなかなか難しそうですね、もう少し検討してみたいと思います。

お礼日時:2022/05/31 14:32

一発でやるのは難しいですので、ザックリですがふたつの方法を。



ひとつは、削除するのではなくて xcopy /e index.php で、ツリー構造を複製し、複製したあとで img以外のフォルダーを手動で削除。

もうひとつは dir /s /b をリダイレクトして、その内容をExcelのB列に貼り付け、A列を「del」で埋めて、削除しないファイルの行を削除してから、その内容をテキストファイル(BATファイル)に保存すれば、そのBATファイルで一気に削除できます。

どちらにしても、元のディレクトリ構造は、そのままバックアップしてから行うことをお勧めします。
    • good
    • 0
この回答へのお礼

有難うございます。
バックアップしてから、ご連絡頂きました内容を耐えしてみたいと思います。
有難うございます。

お礼日時:2022/05/31 14:30

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています