[NT系]95系の"DELTREE"同等の処理を行うには? (DOSプロンプト活用相談室LOG)
>早速のレスありがとうございます。
>RDコマンド、確認しました。
>これだと、「指定したディレクトリ」まで削除してしまいます。
前回のコメントはご質問の前半、「DELTREEの代替手段」についてストレートにコメントしたもので。用事で出かけるちょっと前だったんで後半は正直なところ読みとばしてましたが(^^;、「やりたい事」をあらためて拝見してみたら、そもそもDELTREEではできない用途をお考えだったようですね。
>ちなみに、やりたい事は、My Documents、temp、デスクトップ、に存在するファイルやフォルダを、マシン起動時に自動的に削除したいのです。
私はどこからcdonts.dllを得ることができますか?
そういうわけで、最初の発言後段のご質問へのコメントですけど、特定のディレクトリ自体は温存し、その配下のあらゆるファイルとディレクトリを削除する処理は、「Windows2000前提ならば」バッチファイルでも可能です。具体的には、
for /D [%% | %]variable in (set) do command [command-parameters]
どのように " Windows XPのレジストリ"に入るために
……の構文を活用するとよいでしょう。(ほかにも何かうまい方法があるかもしれませんが)
/Dは、ディレクトリだけ探し出すスイッチです。これを使えば、次の2段がまえの処理で、特定ディレクトリ配下のすべてのディレクトリとファイルが(Readonlyなどの属性がついていなければ)削除できることになります。(実際に使う前には十分テストしてくださいね。結果に責任持てるわけではないので……)
警告コンピュータが60秒以内にシャットダウンします
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
0 コメント:
コメントを投稿