人に聞けない痔の悩み、これでスッキリ >>

お世話になります。
Windows7(x64)で開発をしております。

質問事項を記述致します。

任意のフォルダ内のフォルダ(サブフォルダ含む)及びファイルの削除(下記例ではD:\test内のフォルダ及びファイルの削除)をしたいですが、
どのようにすると良いかご教示いただけますでしょうか。

ネット検索したところ下記コマンドがヒットしましたので試してみましたが、
------------------------------------------------------------------------------------------------
1.pushd D:\test
2.del /q *.*
3.for /D %%f in ( * ) do rmdir /s /q "%%f"
------------------------------------------------------------------------------------------------
3の箇所で下記のエラーメッセージが発生し、削除することが出来ませんでした。
------------------------------------------------------------------------
%%fの使い方が誤ってます。
------------------------------------------------------------------------

恐れ入りますが、ご教示いただけますようお願い申し上げます。

以上です。

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

A 回答 (2件)

rmdir で /s 指定しているので del 行は不要なのでは?


下記ではどうですか?

cd c:\folder1\folder2
for /d %%f in ( * ) do rmdir /s /q %%f
    • good
    • 0
この回答へのお礼

お世話になります。
ダブルコーテーションが不要だったみたいです。
早々のご回答誠にありがとうございました。
大変助かりました。

お礼日時:2014/08/19 19:17

> %%fの使い方が誤ってます。



エラーメッセージの通りでしょう。
バッチファイルで処理しないでコマンドラインで入力している、ということはありませんか。
---
コマンドラインなら %%変数名 ではなく %変数名 です。( % の記述は一つ)

この回答への補足

すいません。再度質問させていただきます。

ご指摘の内容でコマンドプロンプトから削除は出来ました。
しかしながら、バッチファイルで動作させると動作しませんでした。
原因がつかめずにおります。
恐れ入りますが、再度ご教示いただけますでしょうか。

因みに実行したバッチファイルは以下の通りです。
-------------------------------------------------------
CD C:\フォルダ名\フォルダ名
del /s /q *.*
for /d %%f in ( * ) do rmdir /s /q "%%f"
-------------------------------------------------------

度々恐れ入りますがご回答いただければ幸いに存じます。

以上です。

補足日時:2014/08/19 13:35
    • good
    • 0

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

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

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

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

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

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コマンドプロンプトでの削除

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

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

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

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

Aベストアンサー

類似の質問に回答したことがあります。バッチファイルを作成する方法です。

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

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

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 /?
あたりを一度見てみてください。
自信なしです…(汗)

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 /? 等を見てください。

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

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

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

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

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

Aベストアンサー

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

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

区別するなら、

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

Qxcopyで特定のファイルのみをコピーする方法

xcopyもしくはcopyコマンドを使用し、ディレクトリ内の特定のファイル(複数)を
コピーするにはどのようにしたら良いのでしょうか?

特定のファイルの数が多すぎるため、一行ずつコマンドを書くのは手間が掛るため、
何か良い方法があれば教えて頂きたいと思います。

excludeオプションを使用すれば特定のファイルを除外できるようですが、
反対の意味の特定のファイルのみをコピーしたいです。

例)
c:\test内は以下のファイルがあります。
・aaa.txt
・bbb.txt
・ccc.txt
・ddd.txt
・eee.txt

これらのファイルの内、bbb.txtとddd.txtとeee.txtをコピーしたいです。

Aベストアンサー

よくこんな感じでやってました。
バッチ用コマンドですがバッチファイルを作らずコマンドラインで実行させます。
( コピー先フォルダを C:\distdir\ とします。)

コマンドラインでこれ
for %a in ( bbb.txt ddd.txt eee.txt ) do xcopy c:\test\%a c:\distdir
を実行させると、

カッコ ( ) の中からファイル名を1個拾っては %a に代入し do 以下を実行します、
つまり以下の3コマンドに展開し1個ずつ実行します。
xcopy c:\test\bbb.txt c:\distdir
xcopy c:\test\ddd.txt c:\distdir
xcopy c:\test\eee.txt c:\distdir

尚、この場合は拡張子がいずれも txt なので、以下のように書くと文字数を若干減らせます。
1コマンドラインの文字数は限りがあるので、ファイル数が多くて他の部分を縮めたい時に有用です。
for %a in ( bbb ddd eee ) do xcopy c:\test\%a.txt c:\distdir

ところで、文法を正確に記憶してなくて恐縮ですが、
Windows 配下のコマンドプロンプトが備えるコマンドでは、
予め対象のファイル名リストをテキストファイルで作っておき、
そこからファイル名を1個ずつ拾ってコマンド実行させる事が可能です。

よくこんな感じでやってました。
バッチ用コマンドですがバッチファイルを作らずコマンドラインで実行させます。
( コピー先フォルダを C:\distdir\ とします。)

コマンドラインでこれ
for %a in ( bbb.txt ddd.txt eee.txt ) do xcopy c:\test\%a c:\distdir
を実行させると、

カッコ ( ) の中からファイル名を1個拾っては %a に代入し do 以下を実行します、
つまり以下の3コマンドに展開し1個ずつ実行します。
xcopy c:\test\bbb.txt c:\distdir
xcopy c:\test\ddd.txt c:\distdir
xcopy c:\test\eee.txt ...続きを読む

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

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&Aを見た人がよく見るQ&A

人気Q&Aランキング