- ベストアンサー
ファイルやディレクトリの削除コマンドについて
- ファイルやディレクトリの削除コマンドについて。サーバ内のあるディレクトリ内に保存されているファイルやフォルダを全て消去するための方法を探しています。現在、batファイルを作成してテストを行っていますが、うまくいきません。ファイルの削除は成功しているが、空フォルダが残ってしまいます。
- batファイルの内容は、delコマンドとrdコマンドを使用しています。delコマンドではファイルの削除を行っていますが、rdコマンドでは空フォルダの削除ができていないようです。abcディレクトリの下には多くのファイルやディレクトリがあり、毎日違う名前のファイルやフォルダが作成されるため、毎日これらをまとめて消したいと考えています。
- どのようにすれば、abcディレクトリ下のフォルダおよびファイルを全て削除し、abcディレクトリだけを残すようなbatファイルを作成できるでしょうか?また、毎日自動的にこれらを削除する方法はありますか?助言をお願いします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
set DelRootFldr=x:\test\abc for /f "delims=" %%i in ('dir /b /a:d "%DelRootFldr%\*.*"') do ( rd /s /q "%DelRootFldr%\%%i" ) 解説: 1行目:環境変数(バッチファイル実行中のみ有効)"DelRootFldr"に残すフォルダ"x:\test\abc"をセットします。(実際の実行に当たって、1行目だけを書き換えればすむようになりますので。) 2行目:括弧内の'dir /b /a:d "%DelRootFldr%\*.*"'が実行される際に、"%DelRootFldr%"が"x:\test\abc"に置き換えられ、実際には、'dir /b /a:d "x:\test\abc\*.*"'が実行されます。 通常画面に出力される実行結果(サブフォルダ名)が順に"%%i"に入り、4行目が繰り返されます。 3行目:"%DelRootFldr%"下のサブフォルダごとに"rd /s /q"が実行されます。 >DELTREEコマンドを利用できるようにする設定があるのでしょうか? >初歩的な質問と思いますが、初心者な上いきなりサーバの管理を行うようになったためお許しください。 Windows NT/2000/XP/server 2003/Vista/7/server 2008には、"deltree"コマンドは存在しません。MS-DOSかWindows 95/98からコピーしてこないと使えません。(MS-DOS用の16bitアプリケーションコマンドです。)
その他の回答 (4)
- deadline
- ベストアンサー率63% (1239/1943)
回答No.4の補足。 "x:\test\abc"フォルダ直下にファイルがある場合、No.4の回答では、そのファイルが削除されませんので、1行目と2行目の間か、最後の行(5行目)に、 del /q "%DelRootFldr%\*.*" を追加してください。
- necomimi
- ベストアンサー率41% (633/1540)
それならば del /q x:\test\abc\*.* for /d %%i in (x:\test\abc\*) do ( rd /s /q %%i )
- necomimi
- ベストアンサー率41% (633/1540)
RDは/Sを指定するとディレクトリとファイルをすべて消すとあるので rd /s /q x:\test\abc mk x:\test\abc でいいのでは?
補足
回答ありがとうございます。 回答内容を確認させて頂きましたが、 一度abcディレクトリごと削除し、そのあとで abcディレクトリを作り直すということでしょうか? 私の説明不足で申し訳ないのですが、 abcディレクトリは他の複数のPCからネットワークドライブぼ様な形で 表示されるように設定しており、abcディレクトリを再作成してしまうと アクセス権等の設定をやり直すことになるので、できれば abcディレクトリは現状のまま残して、abcディレクトリの下のディレクトリや フォルダだけ削除したいのです。
- Hardking
- ベストアンサー率45% (73/160)
DOSコマンドのDELTREEを使用すれば一発で削除できるはず。 DELTREE x:¥test¥abc
補足
回答ありがとうございます。 DELTREEコマンドで試してみたのですが、 コマンドプロンプトで「内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチファイルとして認識されていません」と表示されてしまいます。 batファイルを実行しようとしている機器のOSはwindows server 2008 32bitです。 DELTREEコマンドを利用できるようにする設定があるのでしょうか? 初歩的な質問と思いますが、初心者な上いきなりサーバの管理を行うようになったため お許しください。
お礼
丁寧な解説ありがとうございます。 教えて頂いた方法でやってみたところ、うまくいきました。 また、お礼が遅れたことをお詫びします。