220) Win2k DELTREEについて Love 2002/04/30(火) 11:33 |
|
こんにちは。 初めて投稿します。 さて、タイトルの通り、Windows2000のDELTREEについての質問なのですが、皆さんご存知の通り、WindowsNT4.0、Windows2000にはDELTEEコマンドが存在しません。類似のコマンドでRD(RMDIR)が存在しますが、これではサブディレクトリ以下にファイルやディレクトリが存在した場合、削除することが出来ません。 (このサイトにも同様のことが記載されています) そこで、DELTREE同等の処理を実現するために、バッチ(bat、cmd)ファイル、または、スクリプトで処理させたいのですが、どのようにすれば良いのでしょうか? ここはコマンドプロンプト関連ということで、スクリプト等には該当しないかも知れないですね・・・(^^;; バッチコマンドだけだと不可能な気もしますし・・・ ちなみに、やりたい事は、My Documents、temp、デスクトップ、に存在するファイルやフォルダを、マシン起動時に自動的に削除したいのです。 よろしくお願いします。 |
|
221) Re:Win2k DELTREEについて SYSOP 2002/04/30(火) 13:06 |
|
Loveさん >類似のコマンドでRD(RMDIR)が存在しますが、これではサブディレクトリ以下にファイルやディレクトリが存在した場合、削除することが出来ません。 >(このサイトにも同様のことが記載されています) えっと、解説ページの書き方がいまいちわかりにくかったのかなとも思いますが、RDのページの上のほうに追記してあるとおり、/S スイッチをつければサブディレクトリがあってもまるごと削除が可能(なハズ)です(そこから下の解説文は、DOS/Win95系のRDの説明になっています)。確認してみてください。 YanaKen |
|
222) Re2:Win2k DELTREEについて Love 2002/04/30(火) 14:33 |
|
>YanaKen さん 早速のレスありがとうございます。 RDコマンド、確認しました。 これだと、「指定したディレクトリ」まで削除してしまいます。 確かに、RDでディレクトリを削除した後、同じディレクトリを作成しなおせば良いのですが、特殊ディレクトリだった場合、単に作り直しただけで、この後のOSが正常に動作するかどうか分かりません。 もしくは、RDコマンドは、特殊ディレクトリは削除せず、処理を中断、と言うこともありますが、この場合は、どうしようもないですね・・・ 更に、tempディレクトリ配下にサブディレクトリがある場合は、ディレクトリ名が固定名ではないし、また、複数存在する場合もあります。 「バッチによる自動化」を行う際の確定要素がないのです・・・ いろいろ面倒臭い事になってきましたが、もう一つ質問が・・・(^^;; コマンドプロンプトからファイルの属性を変更する「attrib」が、以前のOSだと存在していたはずですが、Win2000だと、無くなっているようです。 コマンドベースで属性を変更するコマンドは無いでしょうか? すみませんが、再度、解答お願いしますm(_ _)m |
|
226) Re3:Win2k 自動ファイル/ディレクトリ一括削除 SYSOP 2002/05/01(水) 02:00 |
|
Loveさん >早速のレスありがとうございます。 >RDコマンド、確認しました。 >これだと、「指定したディレクトリ」まで削除してしまいます。 前回のコメントはご質問の前半、「DELTREEの代替手段」についてストレートにコメントしたもので。用事で出かけるちょっと前だったんで後半は正直なところ読みとばしてましたが(^^;、「やりたい事」をあらためて拝見してみたら、そもそもDELTREEではできない用途をお考えだったようですね。 >ちなみに、やりたい事は、My Documents、temp、デスクトップ、に存在するファイルやフォルダを、マシン起動時に自動的に削除したいのです。 そういうわけで、最初の発言後段のご質問へのコメントですけど、特定のディレクトリ自体は温存し、その配下のあらゆるファイルとディレクトリを削除する処理は、「Windows2000前提ならば」バッチファイルでも可能です。具体的には、 for /D [%% | %]variable in (set) do command [command-parameters] ……の構文を活用するとよいでしょう。(ほかにも何かうまい方法があるかもしれませんが) /Dは、ディレクトリだけ探し出すスイッチです。これを使えば、次の2段がまえの処理で、特定ディレクトリ配下のすべてのディレクトリとファイルが(Readonlyなどの属性がついていなければ)削除できることになります。(実際に使う前には十分テストしてくださいね。結果に責任持てるわけではないので……) for /D %%f in (c:\temp\*.*) do if not %%f.==. rd /s /q %%f ↑c:\tempの下にディレクトリがあれば、それを1つずつ削除します。/qは「確認を求めない」スイッチで、/s と/qをセットにすればdeltree /y と同様に作用します。 "if not %%f.==. "は、(もしかしたら要らないかもしれませんが)、パラメータが空の状態でrdが起動されないよう、安全のために入れてあります。 for %%f in (c:\temp\*.*) do if not %%f.==. del %%f ↑上のコマンドではc:\temp直下の「ファイル」は残ってしまう理屈になるので、それらをこの文で削除します。"del *.*"だと確認プロンプトが出てしまうので、1つずつ一致するファイルを削除する形式を用いています。 >コマンドプロンプトからファイルの属性を変更する「attrib」が、以前のOSだと存在していたはずですが、Win2000だと、無くなっているようです。 なくなっていません。ちゃんとあります。Windows2000のコマンド?リファレンスをもう一度チェックしてみてくださいね。(for 文の /D スイッチ等についても同様に、コマンドリファレンスに説明がありますので、詳しくはそちらをどうぞ) YanaKen |
|
260) Re4:Win2k 自動ファイル/ディレクトリ一括削除 Love 2002/05/10(金) 12:57 |
|
>YanaKen > えーと、大変返事が遅れてしまい、申し訳ありません・・・ 自宅のPCが逝ってしまいまして・・・(;;) とりあずPCを用意できたので、この掲示板を確認していたところでして、まだ動作の確認は行っておりませんが、早速、テストしてみます。 色々とありがとうございました(^^) |