バッチファイル。ディレクトリ内のすべてのファイルとフォルダーを削除する


135

ワイヤレスツールキットのキャッシュフォルダーにあるすべてのフォルダーとファイルを削除するバッチファイルが必要です。

現在、私は以下を持っています:

cd "C:\Users\tbrollo\j2mewtk\2.5.2\appdb\RMS"
del *.db

これにより、RMSディレクトリ内のすべての.dbファイルが削除されますが、このディレクトリからすべてのものを削除したいと思います。これどうやってするの?


3
入力del /?プロンプトで。ツールの使用方法に関する情報を提供します。この場合、del *.* /s動作しますが、間違ったディレクトリでは実行しないでください!
マイケルトッド

35
rmdir /s /q c:\users\tbrollo\j2mewtk\2.5.2\appdb\RMS
forsvarir 2011

賛成票ごとに正解を変更することをお勧めします
GregM

5
forsvarirの答えは、RMSディレクトリも削除するため、意図したものとは異なる場合があります。(実際には、ディレクトリの元のタイムスタンプとそれが持っていた権限が失われるため、多くの場合私望ましくありません。)ディレクトリのコンテンツをすべて削除してディレクトリ自体を残す方法については、私の回答を参照してください場所。
Bill_Stewart 2015年

回答:


52

del *.*の代わりにdel *.db。それですべてが削除されます。


56
注:あなたは/ FQフラグを追加するプロンプトyoullの必要性を「あなたは、あなたが削除する...よろしいです」バイパスにしたい場合:del . /F /Q
Rhyuk

40
これはファイルではなくフォルダーのみを削除します
icc97

52
(質問で述べたように)フォルダを削除しないので、これは正しい答えとしてマークされるべきではありません。
Bill_Stewart

158

使用する:

  • バッチファイルを作成する

  • 以下のテキストをバッチファイルにコピーします

    set folder="C:\test"
    cd /d %folder%
    for /F "delims=" %%i in ('dir /b') do (rmdir "%%i" /s/q || del "%%i" /s/q)
    

すべてのファイルフォルダを削除します。


4
すばらしい、私は毎月のバッチジョブのためにファイルとフォルダーをクリーンアップするための何かを探していましたが、これでうまくいきました。
デイブハーディング

9
これを行う前に、ディレクトリが存在することを確認してください。
Bill_Stewart 14

2
ファイル名に「特殊」文字が含まれている場合は、まずchcp 10000エンコードをUTF-16に変更してください
Demelziraptor

3
Bill_Stewartからのコメントにメモを追加したいだけです。ディレクトリが存在することを確認する理由は、それ以外の場合は現在のディレクトリをすべてクリアするためです。私の場合、これは30分以上作業していたバッチファイルでした。:(フォルダの残りの部分は、ソース管理下にあった良いこと。
helios456

2
@veeループを(rmdir "%%i" /s/q 2>NUL || del "%%i" /s/q >NUL ) に変更して、エラーおよび削除メッセージを抑制します
Carl Walsh

34
IF EXIST "C:\Users\tbrollo\j2mewtk\2.5.2\appdb\RMS" (
    rmdir "C:\Users\tbrollo\j2mewtk\2.5.2\appdb\RMS" /s /q
)

これにより、フォルダー(およびフォルダー自体)からすべてが削除されます。


13
問題は、すべてのコンテンツのディレクトリを空にすることですが、ディレクトリ自体を削除することではないと思います。
Bill_Stewart 2014

16

del *.*ファイルのみを削除し、サブディレクトリは削除しません。ディレクトリの内容を核にするには、次のスクリプトを使用できます。

@echo off
setlocal enableextensions
if {%1}=={} goto :HELP
if {%1}=={/?} goto :HELP
goto :START

:HELP
echo Usage: %~n0 directory-name
echo.
echo Empties the contents of the specified directory,
echo WITHOUT CONFIRMATION. USE EXTREME CAUTION!
goto :DONE

:START
pushd %1 || goto :DONE
rd /q /s . 2> NUL
popd

:DONE
endlocal

pushd子を削除するディレクトリへの変更。次にrd、現在のディレクトリとすべてのサブディレクトリを削除するように要求すると、サブディレクトリの削除は成功しますが、現在のディレクトリの削除は失敗します。これにより、2> NUL飲み込むエラーが発生します。(2はエラーストリームです)。


6
他の人への説明として、これがどのように機能するのか正確に戸惑いました。プッシュされた変更が、子を削除するディレクトリに変更されます。次に、rdが現在のディレクトリとすべてのサブディレクトリを削除するように要求すると、サブディレクトリの削除は成功しますが、現在のディレクトリの削除は失敗します。これにより、2> NULが飲み込むエラーが発生します。(2はエラーストリームです)。非常に狡猾なスチュワート氏!
キネティック

ああ、「setlocal enableextensions」は、現在のディレクトリをスタックに同時にプッシュし、ディレクトリを変更する機能をオンにします。とにかくデフォルトでオンになっているので、これはXPより前のバージョンでは必須のようです。
キネティック

コメントからの情報を回答に統合できますか(コメントはいつでも消える可能性があります)?(なし使用:「編集」 「:」更新ラベル。)
ピーター・モーテンセン

12

私はこれをmorty346が投稿したものからまとめました:

set folder="C:\test"
IF EXIST "%folder%" (
    cd /d %folder%
    for /F "delims=" %%i in ('dir /b') do (rmdir "%%i" /s/q || del "%%i" /s/q)
)

変数で定義されたフォルダが最初に存在することを簡単に確認し、ディレクトリをそのフォルダに変更し、内容を削除します。


2
したがって、簡単なヒント-ネットワークパスでこれを実行しようとすると、「IF EXIST」ステートメントを使用しても、フォルダーの設定に失敗し、ステートメントがコマンドプロンプトに記録されます。 Windowsディレクトリ」の場合、Windowsディレクトリ内のすべてを削除しようとします。ので注意してください。
CBRF23 2017

11

del/Sフラグを使用してこれを行うことができます(すべてのサブディレクトリからすべてのファイルを再帰するように指示します)。

del /S C:\Path\to\directory\*

RDのコマンドも使用することができます。プロンプトなしで再帰的にサイレントに削除します。

@RD /S /Q %VAR_PATH%

rmdir(rd)



3

以下を試してください。わたしにはできる。

「C:\ tmp」フォルダにデータをダンプするアプリケーションがあり、次のものが最適です。データの削除を「はい」または「いいえで要求することもありません。5分ごとに実行するようにスケジュールを設定しました

cd "C:\tmp"

del *.* /Q

7
「C:\ tmp」フォルダが存在しない場合(ユーザーまたは他のアプリケーションがそのフォルダを削除した場合)、このフォルダを実行しようとすると、「C:\」内の他のフォルダからデータが削除されませんか?(私と一緒に起こりました)
Vikram

4
Vikramが指摘しているように:1)これは非常に危険であり、2)質問で述べられているようにサブディレクトリを削除しません。
Bill_Stewart 2015年

2
フォルダの事に加えて...あなたはただ行うことができますdel /q c:\tmp\*.*、それは約100万倍安全です。言うまでもなくcd、ドライブではなくパスのみが変更されます。
Nyerguds

1
これはひどいアドバイスです。他の人が述べたように、これの結果として、多くの重要なデータをパージしてしまう可能性があります。削除のフラグが付けられた悪いと思います。
RyanfaeScotland

2

さらに良いことに、私はC:\windows\tempフォルダの下にあるすべてのものを削除したいとしましょう。

@echo off
rd C:\windows\temp /s /q

11
これでディレクトリが削除されc:\windows\tempます。私はそれが最初の質問が求めていたものではないと思います。
Bill_Stewart 14年

ディレクトリを削除するのが最も簡単だと思います。後で再作成する必要がある場合は、削除できます。1つの問題は、特別なフォルダーのアクセス許可の喪失である可能性があります。ただし、これは他のほとんどの回答よりもはるかに簡単に思えます。
madannes 2015年

1
悲しいことに、バッチスクリプトから削除してすぐに再作成すると、Win10でランダムな「アクセス拒否」エラーが発生するようです...
Nyerguds

2

robocopyを使用して、空のフォルダーをクリアするフォルダーにミラーリングできます。

robocopy "C:\temp\empty" "C:\temp\target" /E /MIR

実際のフォルダを削除または再作成できない場合にも機能します。

既存の空のディレクトリが必要です。


1
ロボコピーの助けによると、/MIR :: MIRror a directory tree (equivalent to /E plus /PURGE).それ/Eは冗長だとかなり確信しています。
Nyerguds

2

使用する

set dir="Your Folder Path Here"
rmdir /s %dir%
mkdir %dir%

このバージョンは確認なしで削除します。

set dir="Your Folder Here"
rmdir /s /q %dir%
mkdir %dir%

例:

set dir="C:\foo1\foo\foo\foo3"
rmdir /s /q %dir%
mkdir %dir%

これはクリアされC:\foo1\foo\foo\foo3ます。

Abdullah Sabouinの回答について述べたいと思います。私が彼をコピーすることに混乱がありました。私は彼の投稿に気付きませんでした。エラーを指摘してくれたmelpomeneに感謝します!)


それはまったく機能しません。rmdir foofoo空のディレクトリでない場合はエラーになります。
メルポメン2017年

@melpomene私はエラーを見つけました、そしてそれは修正されるべきです!!
TravieDude Minecraftなど2017

1
@Abdullah Sabouniをコピーするつもりはありませんでした。私はこれに気づかなかったに違いありません。申し訳ありません。
TravieDude Minecraftなど2017

@melpomene私は私のエラーと何が起こったかについての私の見解を述べました。しかし、とにかく役立つ場合に備えて、削除しないことにしました。ご指摘いただきありがとうございます。
TravieDude Minecraftなど

@TravieDudeMinecraftandMore +1-私のためにも働いた。
ガイアブラハム

0

いずれかrmdirまたはdel単独ですべてを削除することはできません。

  • rmdir /s /qワイルドカードパラメータは使用できません。そうrmdir /s /q *エラーになります。
  • del /s /f /q すべてのファイルを削除しますが、空のサブディレクトリは残ります。

(私が他の多くのバッチファイルで使用したので)私の好ましい解決策は:

rmdir /s /q . 2>NUL

0

GregMの回答の修正バージョン:

set folder="C:\test"
cd /D %folder%
if NOT %errorlevel% == 0 (exit /b 1)
echo Entire content of %cd% will be deleted. Press Ctrl-C to abort
pause

REM First the directories /ad option of dir
for /F "delims=" %%i in ('dir /b /ad') do (echo rmdir "%%i" /s/q)

REM Now the files /a-d option of dir
for /F "delims=" %%i in ('dir /b /a-d') do (echo del "%%i" /q)

REM To deactivate simulation mode remove the word 'echo' before 'rmdir' and 'del'.

-1
@echo off
@color 0A

echo Deleting logs

rmdir /S/Q c:\log\

ping 1.1.1.1 -n 5 -w 1000 > nul

echo Adding log folder back

md c:\log\

あなたは正しい軌道に乗っていました。削除されたフォルダを再び追加するコードを追加するだけです。


1
このソリューションはディレクトリを削除し(そのため、そのアクセス許可を失います)、(おそらく別のアクセス許可で)再作成するため、このソリューションはお勧めしません。
Bill_Stewart 2018

-3

すべてのファイルを削除するには、次のコマンドを実行する必要があります。

del*.*

6
2011年7月26日21:04に承認された回答と同じ。何か新しいものがない場合は、回答を追加しないでください。
ステファン

2
@Stephanからの有効な批評に加えて、コマンドはdel *.*(スペースを含む)である必要があります
Ty Hitzeman
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.