プロが教えるわが家の防犯対策術!

D:\aaaaa
このフォルダ内に複数のフォルダとファイルがあります。
aaaaaフォルダは残して、中のフォルダとファイルを全て削除したいです。

del /f/s/q D:\aaaaa\*
だとファイルしか削除されません。

rd /s/q D:\aaaaa\
だとaaaaaフォルダごと削除されてしまいます。

aaaaaフォルダ内のフォルダは決まったフォルダではなく実行ごとに名前の違うフォルダがあります。
名前を指定してのフォルダ削除ではなく、aaaaa内の全てのフォルダとファイルを
削除するにはどうしたら良いでしょうか?

このQ&Aに関連する最新のQ&A

A 回答 (4件)

類似の質問に回答したことがあります。

バッチファイルを作成する方法です。

http://oshiete.goo.ne.jp/qa/4442349.html のベストアンサーをご確認下さい。
ご質問の例だと、以下のようになります。

pushd D:\aaaaa
del *.*
for /D %%f in ( * ) do rmdir /s "%%f"
    • good
    • 4
この回答へのお礼

pushdでフォルダ移動すればよかったのですね。
ありがとうございました。

お礼日時:2011/05/13 15:20

No.1 さんのが正解に決まっています。

(理由は「注記」参照)
バッチ処理や for コマンドを使うまでもありません。

コマンドは継続扱いにすれば(&& or &)一行で処理できますので、つぎのようになります。
&& or & はコマンド処理の基本です。
rd /s/q d:\aaaaa && mkdir d:\aaaaa
&&は「正常終了後継続」を意味します。
& だけの場合は「終了後継続」なので無条件にフォルダを作成します。
※更新が入りますので「管理者として実行」する必要がある場合があります。
※コマンドの理由ではなくて、ファイルやフォルダによってはアクセス拒否の場合がありますので、セキュリティの問題は無い状態で処理してください。
---「注記」
del はファイルの削除なのでファイルしか削除されません。
rd はフォルダの削除ですのでフォルダごと削除されてしまいます。
windowsには「指定したフォルダ内のファイルのみと傘下のフォルダおよびフォルダ内のファイルを削除する」というコマンドはありません。
コマンドを組み合わせれば、同じ機能が実行できるからです。
    • good
    • 1

今回の案件ではANo.1さんの回答で必要十分だと思いますが、検索してみたらforを使う方法が紹介されていました。



参考URLをご覧になるとわかりますが、こちらの方法はより汎用性が高いです。

参考URL:http://oshiete.goo.ne.jp/qa/1178990.html

この回答への補足

リンク先のNo.4を参考にしましたが、コマンドでdirの参照するフォルダをフルパスにしても
dirで表示されるのはフォルダだけなので、指定されたファイルが見つかりません。
と出て、フォルダが削除できません。

補足日時:2011/05/13 13:08
    • good
    • 0

フォルダごと削除した後、フォルダを作り直せばいいと思う。



…ダメ?
    • good
    • 2

このQ&Aに関連する人気のQ&A

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

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q特定のディレクトリをカラにするバッチ処理

特定のディレクトリをカラにするバッチ処理

WindowsOSにおいて、特定のディレクトリをカラにするバッチ処理があれば
その書き方を教えてください。

意味不明でしたら加筆しますのでよろしくお願いします。

Aベストアンサー

特定のフォルダ内のサブフォルダもファイルも消すんですよね。
特定のフォルダ自身は残したいということでいいでしょうか。

D:\testフォルダの中をすべて消すバッチの例です。

pushd D:\test
del *.*
for /D %%f in ( * ) do rmdir /s "%%f"

確認せずにやるなら /q オプションで。

pushd D:\test
del /q *.*
for /D %%f in ( * ) do rmdir /s /q "%%f"

過去の同様の質問もご参照ください。
http://okwave.jp/qa4178416.html

参考URL:http://okwave.jp/qa4178416.html

Qバッチファイルを利用したフォルダの一括削除

バッチファイルを利用して特定のフォルダ内にあるすべての
ファイル&フォルダを削除したいと思っています。

Dドライブ直下のファイルを削除するときは
del "D:\*.*"
これですべてのファイルは削除できるかと思います。

Dドライブ直下にフォルダがあった場合どのように削除したらよいのでしょうか?
rmdirコマンドでは、フォルダごとに指定してやる必要がありますよね?
ワイルドカードを使用してフォルダを削除する方法などあるのでしょうか?

特定フォルダそのものを削除してしまって、作り直したほうが早いかとも
思いましたが、アクセス権設定を再度しなければならなくなるので
何か良い方法はないでしょうか?

ご存知の方いらっしゃいましたら、よろしくお願いいたします。

Aベストアンサー

こんにちは。
せっかくのバッチなので1つのコマンドでやろうと思わないで、
二段階に分ける方法はいかがでしょう。

1.配下のファイルを削除する
2.配下のサブフォルダを削除する。


pushd D:\test
del *.*
for /D %%f in ( * ) do rmdir /s "%%f"


確認せずにやるなら /q オプションで。

pushd D:\test
del /q *.*
for /D %%f in ( * ) do rmdir /s /q "%%f"

Qワイルドカードを使ってでフォルダを削除

kで始まるディレクトリを削除しようとして、コマンドプロンプトで
rmdir /s /q k*
と打つと、
「ファイル名、ディレクトリ名、またはボリューム ラベルの構文が間違っています。」
と言ってきます。
どうすれば、DOSコマンドで、kで始まるディレクトリをいっぺんに削除できますか。

WindowsXPです。

Aベストアンサー

こんな方法もありますよ。
for /F %a in ('dir /AD /B /W k*') do rmdir /S /Q %a

XP限定ならば関係ないですけど、これならばどのWindowsでもいけるかと・・・

Qフォルダの中身を全部消したい。

あるフォルダの中だけ全部消したいのですが
コマンドや、ツールなどで消す方法はありますか?
消すのは中身すべてです。

たとえばこんな場所
"C:\Documents and Settings\user\デスクトップ\aaa"

ファイルを開いて、選択してDELキーではなく一発で消す方法です。

(環境:Windows2000、XP、ME)

Aベストアンサー

メモ帳を開いて、下のような文章を書いて del.batなどの名前で保存。ダブルクリックでバッチファイルが走って自動的にデータが削除されると思います。
-------------------
rmdir C:\Documents and Settings\user\デスクトップ\aaa\ /S
mkdir C:\Documents and Settings\user\デスクトップ\aaa\
-------------------

大元になるフォルダ(\aaa)は残しておきたいみたですので、1行目で(\aaa)フォルダごと削除して2行目で(\aaa)フォルダだけ作り直すという感じでどうでしょう。

rmdir はディレクトリ(フォルダ)の削除で、/Sオプションをつけると内部にあるディレクトリも一緒に削除してくれるようなので、上記の方法を推してみました。

コマンドプロンプトから、
 rmdir /?
 mkdir /?
 del /?
あたりを一度見てみてください。
自信なしです…(汗)

QXCOPYで指定したフォルダとファイルをコピーしたい

C:\AAAフォルダとC:\AAA以下のファイルをコピーしたくて、
XCOPY C:\AAA D:\BBB /E
とすると、コピー先のD:\BBBにはAAAフォルダにあるファイルはコピーされるのですが、AAAフォルダそのものはコピーされません。
XCOPY C:\ D:\BBB /E
とすればコピーできるのですが、そうするとC:\のほかのフォルダもコピーされてしまいます。
EXCLUDEオプションを使うには指定するファイルが多いため、あまり使いたくありません。(コピーする前にMDでコピー先にAAAフォルダを作成するのもなるべく避けたい)
知っている方がいらしたら教えて下さい。

Aベストアンサー

xcopy /e C:\AAA D:\BBB\AAA
複数ファイルのコピーでコピー先が存在しないとき、ファイル名と見なすかディレクトリ名と見なすか聞いてきます。

応答を聞かれるのが嫌なら
echo d | xcopy /e C:\AAA D:\BBB\AAA
でいいはず。

QBatch: フォルダ内の特定のファイル以外を全て削除

こんにちは。

件名通りなのですが、フォルダ内のファイルや
サブフォルダを特別な数個のファイルを残して全て削除したいのです。

残すファイルの拡張子は *.mdb です。
例を挙げると以下のような状態で、mdbファイル以外
全てのファイル、Bフォルダも全部消したいのです。

A--- 1.mdb   2.mdb aaa.txt  bbb.doc  ccc.html
|----B(フォルダ) ddd.pdf  eee.xls

拡張子を指定すれば、と思ったのですが、どんな拡張子の
ファイルが放り込まれているのかわかりません。
またフォルダもどんな名前のフォルダが作成されているか
予測できません。

全部消す & *.mdb を除く のような構文があればいいのですが
可能かどうか、可能であれば、教えていただけないでしょうか?
よろしくお願いします。

Aベストアンサー

バッチファイルを作って実行します。

cd \A
for /r %%F in (*) do if /i "%%~xF" neq ".mdb" del "%%F"
for /r /d %%D in (*) do rd "%%D"

はじめのfor文でファイルを全部リストアップして拡張子が .mdb 以外のものを削除します。
次のfor文でディレクトリを全部リストアップして rd で削除します。.mdb ファイルが残っており空ディレクトリでなければ削除されません。エラーメッセージがでますけど気にしなければいいです。メッセージがいやなら、
for /r /d %%D in (*) do rd "%%D" 2>NUL
にすればいいです。

詳しくは、for /? や if /? 等を見てください。

QDirコマンドでフォルダ内ファイルの合計サイズをだすには?(コマンドプロンプトにて)

いろいろ調べましたが不明な点があり、質問します。

WindowsのDOSプロンプトでdirコマンドを打つとフォルダ・ファイルの一覧が表示されますが、その中にファイルサイズが表示されています。
このサイズを合計できるコマンドはありませんか?
DIRコマンドのオプションを調べましたがそれらしいものが見当たりません。
具体的には
C:\xxx\配下に50個程度のファイルがあります。
その50個の合計サイズを知りたいです。
xxxフォルダの親フォルダにはアクセス不可です。

ずーっと悩んでいます。よろしくお願いします。

なお、OSはWindowsNTか2000で使用予定です。

Aベストアンサー

カレントドライブ、カレントフォルダを
C:\xxx\
にした状態で、

dir /s /a-d

/sパラメータででサブディレクトリすべてを検索
/a-dパラメータでディレクトリ以外のファイル(つまり属性に関係なくすべてのファイル

これを実行すると最後にファイルの個数とファイルサイズの合計を表示します。

もし、隠し属性のファイルは合計しないのであれば、

dir /s

だけで良いと思われます。

QDOSコマンドで指定日数よりも過去のフォルダを削除

サーバ上のログファイルを日毎に次のようなフォルダにまとめて管理しています。
(ログフォルダは翌朝のDOSバッチジョブでBACKUP_(処理日付)のフォルダを作成してその下に*.*指定で全てのファイル(除 フォルダ)を移動して作成します。)

例.
BACKUP_20041130
BACKUP_20041129
BACKUP_20041128
   ・
   ・
   ・
BACKUP_20040311
BACKUP_20040310

このフォルダを処理日付から数えて90日より古いものを削除するDOSコマンドバッチファイル(日次実行)を作成したいです。

プログラムを作成すればこれを実現するのは可能なんですが、なんとかDOSコマンドだけでこの仕組を作りこめないものでしょうか?

ご存知の方がいらっしゃったら教えて下さい。

Aベストアンサー

毎日必ずフォルダが作られているなら最新の90個を除いたものを消せばいいので、
for /f "skip=90" %%A in ('dir /b /ad /o-n BACKUP_????????') do rd /s /q %%A

ちゃんと日付けの計算をするなら、バッチコマンドだけでも不可能ではないですが長くなるので、日付け計算だけVBScriptを使うのが良いと思います。
echo WScript.Echo DateAdd("d",-90,Date) > tmp.vbs
for /f "delims=/ tokens=1-3" %%A in ('cscript //nologo tmp.vbs') do set OLD=BACKUP_%%A%%B%%C
del tmp.vbs
for /d %%D in (BACKUP_????????) do if %%D LSS %OLD% rd /s /q %%D

Qbatである文字列内に特定の文字列が含まれているか確認したい

batファイルの中である変数「abc」の中に「test」という文字が含まれていたら○○を行なうという分岐を作成したいのですが、どのように行なえばよいのでしょうか?

そのまま、ずばりのお答えお待ちしております。

よろしくお願い致します。

Aベストアンサー

大文字小文字を区別しなくていいなら、

if not "%abc:test=%" == "%abc%" echo 含まれていた

区別するなら、

echo %abc% | find "test" >NUL
if not ERRORLEVEL 1 echo 含まれていた

Qコマンドプロンプトによるフォルダ内のファイル存在有無

バッチ処理で、特定のフォルダ内(配下にフォルダとファイルが混在している)でファイルだけの存在有無を調べて、ファイルが存在している場合とファイルが存在していない場合で処理を別々に行わせようとしたいのですが、ファイルの存在有無はどのようにコマンドで調べれば良いでしょうか?

DIR C:\test\*.* でファイルを調べて、ERRORLEVELでif判定させようと思っているのですが、 DIRコマンドでこれを行うと、フォルダまで表示されます。

どのようにしたら良いのでしょうか?教えてください。

Aベストアンサー

コマンドプロンプトで、「DIR /?」と入力すれば、DIRコマンドのヘルプが表示されます。

その記述によれば
「/A」属性スイッチで、必要な属性を持つファイルを指定できます。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング