コマンドプロンプトを使用して特定のフォルダー内のすべてのファイル/サブフォルダーを削除するにはどうすればよいですか?


42

Windows 7のバッチファイル内のすべてのファイルとサブフォルダーを削除し、最上位フォルダーを保持したいと思います。基本的にフォルダを空にします。そのためのコマンドライン命令は何ですか?


3
ちょっとしたことではありませんが、「DOS」ではなく「コマンドプロンプトから」これを行う方法を探しています。Win ME以降、DOSサブシステムはありません。
MDマーラ

@MarkM:確かにありますntvdmが、64ビットシステムが市場シェアを獲得するにつれて、それはますます無関係になっています。
ジョーイ

回答:


55

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

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

2
あなたの方が良い:D +
1-

3
説明:delは削除を表し、Sは再帰を表します。
タマラWijsman

3
@ Tony_Henrich、msdosコマンドの詳細については、こちらをご覧ください。 computerhope.com/msdos.htm
モアブ

3
/ Qを使用すると、空のサブフォルダが保持されますが、これは望ましくありません。
トニーヘンリッチ

3
これは間違った答えであり、多くの賛成票を受け取った理由がわかりません。人々は質問を完全に理解しておらず、コメントを読んでいないようです!答えを見て、正しいものを選択します。
Tony_Henrich

22

最良の解決策:たとえば、親ディレクトリのすべてのファイルとサブディレクトリを削除したい場合は、「C:\ Users \ Desktop \ New folder \」と言います。簡単な方法は、以下の3つのコマンドのバッチファイルを作成することです。

cd C:\ Users \ Desktop \ New folder \

del * / S / Q

rmdir / S / Q "C:\ Users \ Desktop \ New folder \"

ここでは、最初にすべてのサブディレクトリ内のすべてのファイルを消去し、次にすべての空のサブディレクトリを消去します。現在の作業ディレクトリは親ディレクトリ、つまり「\ New folder」なので、rmdirコマンドはこのディレクトリ自体を削除できません。


1
システムがルートフォルダーを削除できない場合の警告を除き、非常にうまく機能します。
ジャーサー

2
良くない。ハードコードされたパスとそれを見て、それはフォルダを空にしません。それを削除します。非常に危険です。パスが終了しないか、つづりが間違っていない場合、現在のフォルダーのファイルを削除します。
Tony_Henrich

1
@Tony_Henrichが言ったようにrmdir、コマンドが削除されますNew folder
Nuktu

いいえ、これは実際には、フォルダ自体を削除せずに「新しいフォルダ」を完全にクリアするときに機能します。唯一の問題は、OSが親フォルダーの削除に失敗したときにマイナー警告を出すことです。また、大きなフォルダがない限り、delコマンドは冗長です。その場合、高速になる可能性があります。あなたはそのようにそれを変更することができます(コメントに改行がないのでごめん):set FOLDER = "%userprofile%\ Desktop \ New folder" cd%FOLDER%rmdir / S / Q%FOLDER%\> nul 2>&1
-HSuke

3
本当に危険です。誰かが先に進んで `C:\ Users \ Desktop \ New folder`を削除/名前変更すると、CDの最初の行が失敗し、バッチファイルは現在の(デフォルトの)ディレクトリ内のすべてを削除します。作業ディレクトリまたはC:\ Windows \ System32になる可能性が非常に高い
Ishmaeel

9

親ディレクトリに移動します。

pushd "Parent Directory"

サブフォルダーを削除します。

rd /s /q . 2>nul

1
うわー、それはハックです。:)
タルネイカルマン14

1
これは、本質的に以前の2つの回答と同等です。
スコット14

上記に同意-これは以前の回答のコピーであり、置き換えられるコマンドと同義のコマンドに置き換えられます。pushdここにcdはまだ行っていないことは何も追加しません。
ハシム

これは私がこれまで使用できた唯一のものであり、質問者が求めていたものに対して正確に機能し、他のすべてはすべてのファイルを削除するだけです。もちろんrmdir /s path-to-folder、すべてのものが入っているフォルダを削除しますが、質問者は作業ディレクトリ内のすべてを削除する方法を知りたがっています。
Katz_Katz_Katz

この答えは私にとって最もうまくいきました。他のすべての回答では、/ Qを使用するときに空でないディレクトリは削除されず、/ Qを使用しないときには常に確認を求められました。
marijnr

5
rmdir "c:\pathofyourdirectory" /q /s

引用符を使用することを忘れないでください。そのため、/q /sプロンプトなしですべてのリポジトリが削除されます。


2
質問は「私は、Windows 7でのバッチファイル内のすべてのファイルとサブフォルダを削除したいと思いましたトップフォルダを保つ。
ヴェルナー・ヘンツェ

5

次のように、rmdirを使用してファイルとサブフォルダーを削除できます。

rmdir /s/q MyFolderPath

ただし、次のように、rmdirの前にdelを使用するサブフォルダーが構造内に多数ある場合は特に、非常に高速です。

del /f/s/q MyFolderPath > nul
rmdir /s/q MyFolderPath

最初のオプションでは、「ディレクトリが空ではありません」というエラーが表示されます。2番目のオプションの最初のコマンドは、フォルダー全体を削除します。それは私が望んでいたようにそれを維持しません。最初のコマンドでフォルダー全体を削除した場合、2番目のコマンドは不要です。
Tony_Henrich

rmdirコマンドは(両方が同じである)親フォルダを削除します。これは質問に対する答えではありません。なぜ人々は読まないのですか?
ハシム

3

すべてのサブフォルダーを含むフォルダー内のすべてのファイルを削除し、いくつかのエラー条件に依存せずにルートフォルダーをそのまま保持する場合(別の回答で見たように)、次のようなバッチファイルを作成できます。

@echo off

REM Checking for command line parameter
if "%~1"=="" (

    echo Parameter required.
    exit /b 1

) else (

    REM Change directory and keep track of the previous one
    pushd "%~1"

    if errorlevel 1 (

        REM The directory passed from command line is not valid, stop here.
        exit /b %errorlevel%

    ) else (

        REM First we delete all files, including the ones in the subdirs, without confirmation
        del * /S /Q

        REM Then we delete all the empty subdirs that were left behind
        for /f %%D IN ('dir /b /s /a:d "%~1"') DO rmdir /S /Q "%%D"

        REM Change directory back to the previous one
        popd

        REM All good.
        exit /b 0
    )

)

そして、あなたは単にそれを呼び出すでしょう:

empty_my_folder.bat "C:\whatever\is\my folder"

3

次の3つの指示をbatファイルに入れることで、すばやく簡単に実行できます。

mkdir empty_folder
robocopy /mir empty_folder "path_to_directory"
rmdir empty_folder

これは、隠しファイルやシステムファイルも削除するため、非常に便利です。
weaknespase

1

フォルダー名にスペースが含まれていると、これがうまく機能しました。

@echo off
REM ---- Batch file to clean out a folder
REM Checking for command line parameter
if "%~1"=="" (

echo Parameter required.
exit /b 1

) else (
echo ***********************************************************************************
    echo *** Deleting all files, including the ones in the subdirs, without confirmation *** 
    del "%~1\*" /S /Q
echo ***********************************************************************************
    REM Deleting all the empty subdirs that were left behind
FOR /R "%~1" %%D IN (.) DO (
    if "%%D"=="%~1\."  (
    echo *** Cleaning out folder: %~1 *** 
    ) else (
    echo Removed folder "%%D"
    rmdir /S /Q "%%D"
    )
) 

    REM All good.
    exit /b 0

)

人々は常に名前にスペースがあることを忘れます。
ケビンパンコ

1

ファイルを削除するには:

del PATH_TO_FILE

すべてのファイルを含むフォルダーを削除するには:

rmdir /s /q PATH_TO_FOLDER

特定のフォルダーからすべてのファイルを削除する(フォルダー自体を削除しない)のは少し複雑です。del /s *.*フォルダーを削除することはできませんが、すべてのサブフォルダーからファイルを削除します。したがって、次の2つのコマンドが必要です。

del /q PATH_TO_FOLDER\*.*
for /d %i in (PATH_TO_FOLDER\*.*) do @rmdir /s /q "%i"

次のように、必要なもの(フォルダーまたはファイル)を削除するスクリプトを作成できますmydel.bat

@echo off
setlocal enableextensions

if "%~1"=="" (
    echo Usage: %0 path
    exit /b 1
)

:: check whether it is folder or file
set ISDIR=0
set ATTR=%~a1
set DIRATTR=%ATTR:~0,1%
if /i "%DIRATTR%"=="d" set ISDIR=1

:: Delete folder or file
if %ISDIR%==1 (rmdir /s /q "%~1") else (del "%~1")
exit /b %ERRORLEVEL%

いくつかの使用例:

mydel.bat "path\to\folder with spaces"
mydel.bat path\to\file_or_folder

0

これは私のために働いたものです。

  1. ファイルを削除するフォルダー内を移動します。
  2. タイプ: del *
  3. Y はい。
  4. 完了
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.