web-dev-qa-db-ja.com

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

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

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

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

これにより、私のRMSディレクトリ内のすべての.dbファイルが削除されますが、このディレクトリからすべてのものが削除されます。

あなたは私を助けることができます?ありがとう。

124
user69514

del *.*の代わりにdel *.db。それはすべてを削除します。

42
Jon Martin

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

下のテキストをバッチファイルにコピーする

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

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

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

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

30
psych

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
14
Bill_Stewart

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)
)

変数で定義されたフォルダが最初に存在することのクイックチェックを追加し、次にディレクトリをそのフォルダに変更して内容を削除します。

12
Fantus_Longhorn

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

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

RDコマンドも使用できます。プロンプトなしで静かに再帰的に削除する

@RD /S /Q %VAR_PATH%

https://technet.Microsoft.com/ja-jp/library/bb490990.aspx

9
PodTech.io
set "DIR_TO_DELETE=your_path_to_the_folder"

IF EXIST %DIR_TO_DELETE% (
    FOR /D %%p IN ("%DIR_TO_DELETE%\*.*") DO rmdir "%%p" /S /Q
    del %DIR_TO_DELETE%\*.* /F /Q
)
5
Cristian Tetic

これを試してください、それは私のために動作します、私は私の "C:\ tmp"フォルダにデータをダンプするアプリケーションを持っています。 5分ごとに実行するスケジュール

cd "C:\tmp"

del *.* /Q
4
poorvesh

Robocopyを使用して、空のフォルダを消去しているフォルダにミラーリングできます。

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

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

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

2
Aaron

いっそのこと、私はc:\ windows\tempフォルダーの下のすべてを削除したいとしましょう。

@echo off
rd c:\windows\temp /s /q
2
user3788752

つかいます

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について述べたいと思います https://stackoverflow.com/a/44578851/8238944 私が彼をコピーすることについて混乱がありました。私は彼のポストに気付かなかった。

エラーを指摘してくれた@melpomeneに感謝します。

https://stackoverflow.com/users/478183/morty346 答えの修正版

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
0
grenix

rmdirまたはdelだけですべてを削除することはできません。

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

私が好む解決策(私が他の多くのバッチファイルで使用したように)は、次のとおりです。

rmdir /s /q . 2>NUL
0
butfly