30日経過したファイルとサブフォルダを削除する方法

このQ&Aのポイント
  • フォルダ内のファイルとサブフォルダについて、作成から30日以上経過しているものを削除する方法を探しています。
  • 現在、実行しているコマンドではうまく削除できず、特にサブフォルダの削除がうまくいきません。
  • 解決方法を教えていただけると助かります。
回答を見る
  • ベストアンサー

30日経過したファイルとサブフォルダを削除したい

\Temp内にあるファイル(サブフォルダを含む)を精査し、作成から30日経過しているファイルと、それによって空になったサブフォルダを削除したいのですが、うまくいきません。 <実行前フォルダ構成> ¥temp 経過日数   \A  A1.txt 20   A2.txt 30 削除対象  A3.txt 40 削除対象   \B 削除対象  B1.txt 30 削除対象   B2.txt 30 削除対象  B3.txt 30 削除対象 <期待している結果> \temp 経過日数   \A  A1.txt 20 まず、以下のコマンドをを実行してみました。 forfiles /P C:\temp /S /D -30 /C "cmd /c del /F /S /Q C:\temp\FTP-test\@file" 実行結果は以下のようになり¥Bが削除されませんでした。 <実行結果> ¥temp 経過日数   \A  A1.txt 20   \B 次に、以下のように書き換えて実行してもダメでした(結果は同じでした)。 forfiles /P C:\temp\FTP-test /d -30 /c "cmd /c if @isdir==true rmdir /Q /S @file" 解決方法が解れば教えて頂ければ幸いです。

質問者が選んだベストアンサー

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4835/10236)
回答No.1

フォルダ内のファイルを消すと、フォルダのタイムスタンプが更新されますので、フォルダの削除はタイムスタンプを見てはだめです。 FTP-testというものが説明無しに出てきて意味不明なので、その部分は無視して、質問文にそって解答します。 rem 30日経ったファイルを削除 forfiles /P C:\temp /S /D -30 /C "cmd /c if @isdir==FALSE del @path" pushd C:\temp rem フォルダが空なら削除 rem 空でなければrdがエラーになるのでエラーメッセージをNULに捨てる for /d /r %%A in (*) do rd "%%~pnxA" 2>NUL popd

yossyy0216
質問者

お礼

アドバイスいただいた通り記述し、無事フォルダを削除することができました。 本当に、ありがとうございました。

関連するQ&A

  • 指定日数経過したファイルをバッチを使って削除する方法

    お世話になります。 今回質問したいのは、あるフォルダ内で作成から5日経過したファイルを削除するバッチの作成方法です。 例えば del /s /q "c:\temp" これを実行するとtempフォルダ内のファイルがサブフォルダを残してすべて削除されます。 これを「作成から5日経過したもののみ」と条件をつけたいのです。 あと、できたら「5日以上アクセスのないもの」という条件もあわせて教えていただければ幸いです。 今回業務の関係で上記処理をバッチでの実行に限定されています。 VBSなどでもできるとは思いますが、バッチコマンドを教えていただければと思います。 わがままを言って申し訳ありませんが、よろしくお願いします。

  • forfilesで検索したファイルをテキストに出力

    forfilesコマンドを使って、更新日付が30日以上前のファイルを検索して削除するバッチファイルを作ろうとしています。 削除する前に検索結果をテキストに出して確認したいのですが、ファイル名しか出すことが出来ません。 なんとか更新日付も出力したいのですが、可能なのでしょうか。現在下記のようになっています。 ※WindowsXP ✳︎✳︎✳︎✳︎✳︎✳︎✳︎✳︎✳︎✳︎✳︎✳︎ forfiles -pC:\WORK\ゴミ箱 -s -m*.* -d-30 >> "ファイル一覧.txt →テキストを確認してから削除実行 forfiles -pC:\WORK\ゴミ箱 -s -m*.* -d-30 -c"CMD /C DEL 0x22@FILE0x22" ✳︎✳︎✳︎✳︎✳︎✳︎✳︎✳︎✳︎✳︎✳︎✳︎ プログラミングの知識がないため、WEB検索しながら何とか作っています。 ご教授頂けると幸いです。

  • バッチファイル 現在のフォルダ名をファイル名に置き換える

    こんにちは。超初心者なのですが教えてください。 ある複数フォルダに格納されている.txtファイルを、現在の フォルダ名を取得して、別フォルダにリネームして 格納するバッチファイルを作成したいと考えています。 for文を繰り返し使わなければいけないことはわかっているのですが、それをどう表現していいのか全然わかりません。 例えば、 データ取得元として以下のファイルがあったら C:\temp\20100101\data1.txt C:\temp\20100101\data2.txt C:\temp\20100101\data3.txt C:\temp\20100102\data1.txt C:\temp\20100102\data2.txt C:\temp\20100103\data1.txt C:\temp\20100103\data2.txt これを別フォルダに、現在のフォルダ名をファイル名にくっつけて 以下のように一つのフォルダに纏めて格納したいと思っています。 ファイルの中身はそのままコピーしたいので、どこかでcopyコマンド を使うかもしれないです。 C:\test\data1_20100101.txt C:\test\data2_20100101.txt C:\test\data3_20100101.txt C:\test\data1_20100102.txt C:\test\data2_20100102.txt C:\test\data1_20100103.txt C:\test\data2_20100103.txt 実装方法として以下までは考えましたが、これ以上は無理そうです。 rem set A=C:\temp rem set B=C:\test for %%A in (C:\temp\) do ( if not "%%A"=="" ( pushd "%%A" for /d %%B in (*) do ( if not "%%B"=="" ( pushd "%%B" for /d %%C in (*) do ( if not "%%C"=="" ( pushd "%%C" ) ) ) ) popd? ) ) 申し訳ありませんが、お助け願います。

  • フォルダを自分ごと削除

    自分自身のあるフォルダを自分ごと削除することは可能でしょうか? CreateProcessでcmd.exeにdelやrmdirコマンドを使って自分自身を 削除することは可能でしたが、 自分自身のフォルダまで削除することができませんでした。 そこで一度tempフォルダに 自分のコピーを作り、その際自分のパスをコマンドラインで送り起動 自分自身は終了、 tempのフォルダはそのコマンドラインのパスからrmdir "パス" /S /Q コマンドを実行するのですが、フォルダ自体が使用中らしく 削除できませんでした。最初のプロセスは終了しているはずなのですが、、 何か良い方法はあるでしょうか。

  • ファイル削除について

    ファイル削除について C:\temp\111-001-会計.txt C:\temp\111-001-人事.txt C:\temp\111-001-総務.txt C:\temp\111-001-販売.txt このようなファイルがあったとします これをワイルドカードを使って"111-001*" というファイル全てを削除するプログ]ラムを 教えてください ちなみにディレクトリは相対パスで指定できる ようにしたいです 自分でも作成してみたのですが ファイルのあいまい検索ができず困っているところです また1件しか削除できないのでfor文か何かで回すのかなといった感じです Public Sub DeleteFile(ByVal folder As String, ByVal searchPattern As String) Dim stFileName As String = System.IO.Path.GetFileName(folder + searchPattern) If System.IO.File.Exists(folder + searchPattern) Then System.IO.File.Delete(folder + searchPattern) MessageBox.Show("ファイルを削除しました") End If End Sub

  • MS-DOSでのファイル/フォルダ一括削除

    以下のようなフォルダ、ファイルがあるとし、LOGDIR下にある「200803」の文字列を 含まないファイル及びフォルダをDOSコマンド(Win2003)で削除(できれば一括で) する方法を模索しています。 Cドライブ   |   |   +LOGDIR      |      +---LOG20080228_084539    <--- 削除対象ディレクトリ      |     |      |     +-------log1.txt      |     |      |     +-------log2.txt      +---LOG20080229_101553    <--- 削除対象ディレクトリ      |     |      |     +-------log1.txt      |     |      |     +-------log2.txt      +---LOG20080301_132059    <--- 削除対象ディレクトリでない      |     |      |     +-------log1.txt      |     |      |     +-------log2.txt      +---LOG20080302_185945    <--- 削除対象ディレクトリでない      |     |      |     +-------log1.txt      |     |      |     +-------log2.txt      |      |-----test20080229_085523.txt    <--- 削除対象ファイル      |      |-----test20080229_092310.txt    <--- 削除対象ファイル      |      |-----test20080301_153859.txt    <--- 削除対象ファイルでない      | 方法をご存知の方、いらっしゃいませんか?

  • フォルダが削除できません

    WindowsXPのSP3を使用しています。 Windowsのアップデートに伴い、EドライブのHDDに「amd64」と「i386」というフォルダの入った「cf8db28c049a632b40561685b778faf5」という意味不明なフォルダが出来てしまいました。 削除しようと思い、自分でGoogleで調べたところコマンドプロンプトでやれそうだったので、rd /s ""\\?\E:\cf8db28c049a632b40561685b778faf5"" というコマンドを実行したところ「アクセスが拒否されました」と出てしまいました。 このEドライブの「cf8db28c049a632b40561685b778faf5」フォルダを強制的に削除する方法は無いでしょうか?

  • サブフォルダの中身ファイルを一括リネームしたい。

    こんにちは 現在,フォルダの中に大量のサブフォルダ,その中に連番のファイルが入っているフォルダがあり,そのファイルの名前をリネームしようと思っています。 具体的には, ABC\a\01.jpg ABC\a\02.jpg ABC\a\03.jpg ABC\a\dat.txt ABC\b\01.jpg ABC\b\02.jpg ABC\b\03.jpg ABC\b\dat.txt ABC\c\01.jpg ABC\c\02.jpg ABC\c\03.jpg ABC\c\dat.txt といった具合です。 これを,一括で ABC\a\a-01.jpg ABC\a\a-02.jpg ABC\a\a-03.jpg ABC\a\a-dat.txt ABC\b\b-01.jpg ABC\b\b-02.jpg ABC\b\b-03.jpg ABC\b\b-dat.txt ABC\c\c-01.jpg ABC\c\c-02.jpg ABC\c\c-03.jpg ABC\c\c-dat.txt という風にリネームしたいのですが,サブフォルダの名前に対応したリネームソフトが見つかりません。 どなたか,良い方法,ソフトをご存じないでしょうか?

  • EXCELを使ったファイル削除

    あるフォルダの中に0~1000のように名前のついたファイル(拡張子は全て同じ)があります。 そのうちEXCELファイル1シートのAの列に並んだ数値のファイルのみをフォルダから削除をしたいです。 何かソフトを使ったりして出来るでしょうか? フォルダ内 (1.txt,2.txt,3.txt・・・) EXCELファイル A B C D・・・ 1 2 2 5 3 10 4 999 上の例だとフォルダ内の2.txt,5.txt,10.txt,999.txtを削除する。

  • forfilesについて

    毎月1回バッチにて第一階層の更新日付が25日以前のフォルダ・ファイルを削除しようとしています。ファイルに関しては、下記コマンドで消えました。 forfiles /P j:\Temp /d -25 /c "cmd /c del /S /Q @file" 残ったフォルダを消すために下記コマンドを実行しましたがうまくいきません。 forfiles /P j:\Temp /d -25 /c "cmd /c if @isdir==true rmdir /Q /S @file is a directory" やりたいことは、25日以上前のフォルダを削除する。もしくは、最初から一気にフォルダ・ファイルを消すことです。 製品とプラットフォームのバージョンとサービスパック Windows Storage Server 2003 R2 SP2 宜しくお願い致します。