Windowsのコマンドプロンプトで特定のディレクトリのファイル/サブフォルダーを削除する方法


308

たとえば、%pathtofolder%フォルダのフルパスであることを明確にするため、という変数があります。

このディレクトリ内のすべてのファイルとサブフォルダを削除しますが、ディレクトリ自体は削除しません。

ただし、「このファイル/フォルダーはすでに使用されています」などのエラーが発生する可能性があります...その場合、続行してそのファイル/フォルダーをスキップする必要があります。

このためのコマンドはありますか?



Windowsがフォルダを削除するのが非常に難しいのは正気ではありません...または、ドットで始まるフォルダを作成する... WindowsでのBash統合に感謝します!rm -rf path\to\folderWindows 10で動作します(またはGit Bashから取得できます...試してみる価値がある場合は、どちらにしても!)
Stijn de Witt

回答:


256

このシェルスクリプトを使用して、C:\Temp source内のフォルダーとファイルをクリーンアップできます。

del /q "C:\Temp\*"
FOR /D %%p IN ("C:\Temp\*.*") DO rmdir "%%p" /s /q

上記のコマンドを含むバッチファイル(たとえば、delete.bat)を作成します。delete.batファイルがある場所に移動し、次のコマンドを実行します:delete.bat


20
試してみましたが、残念ながらファイルが削除されず、サブフォルダしか削除されません。たとえば、Testという名前のフォルダーがあります。「Ripon」と「Wasim」という2つのフォルダーが含まれ、「riponalwasim.txt」という名前のファイルが含まれています。サブフォルダーRiponとWasimは削除されましたが、riponalwasim.txtは削除されませんでした。
Ripon Al Wasim 2013

16
あなたは、コマンドラインなどから直接実行したい場合は、単一のパーセント記号を使用します%p
アレックス

2
これが2行かかることを残念に思うが、少なくともそれはうまくいく!機能する「ワンライナー」を探すのにうんざりしているので、これを使います。ありがとう!
ナイトコーダー2017年

2
'&&'演算子を使用して、batファイルなしで1行で2つのコマンドを実行できます( '%%'ではなく単一の '%'に注意してください)。del / s / q "myfolder *" && FOR / D%p IN( "myfolder *")DO rmdir "%p" / s / q
ravinsp

<for / F "delims =" %% i in( 'dir / b / a-d')do(echo del "%% i" / q)>はファイルを助ける(そのエコーを削除するだけ)
grenix

340

rmdir 仕事で一番好きなコマンドです。それはサブフォルダーを持つ巨大なファイルやフォルダーを削除するために動作します。バックアップは作成されないため、このコマンドを実行する前にファイルを安全にコピーしたことを確認してください。

RMDIR "FOLDERNAME" /S /Q

これにより、フォルダーとすべてのファイルおよびサブフォルダーがサイレントに削除されます。


65
これは、OPが保持しようとしていたパスフォルダーを削除するようです。
Fuzz Evans

4
これによりフォルダー自体が削除されるため、別のコマンドを追加する必要がありますmd FOLDERNAME(下記の@rakoczynからの回答を参照)。
thdoan

4
ここで「バックアップが作成される」とはどういう意味ですか?バックアップを作成するようなものは何も見えません...
ポールグローク

1
ディレクトリは空ではありませんメッセージは応答として来ました!
Jamshaid Kamran

10
フォルダー自体を削除しないようにするには、フォルダーを前に現在のディレクトリにしてから、「。」を使用します。FOLDERNAMEとして。ACLが失われる可能性があるため、後で再作成することは必ずしも同じではありません。 cd "FOLDERNAME" RD . /S /Q
モリッツ両方

85

私が考えることができる最も簡単な解決策は、ディレクトリ全体を削除することです

RD /S /Q folderPath

次に、このディレクトリをもう一度作成します。

MD folderPath

5
新しいフォルダの削除は許可するが作成は許可しない場合はどうなりますか?私はそれが可能になることを願っています:)
Sandy

13
ディレクトリノードのファイルシステムで競合が発生するため、これは不適切なソリューションです。つまり、2番目のコマンドを直後に実行すると失敗する可能性があります。
RokStrniša2013年

22
また、悪い解決策は、ディレクトリには、特別な権限を持っている場合、あなただけの被爆エヘン(おっと)
不滅のブルー

「ディレクトリが空ではありません。」という応答を
Kieran Ryan

1
RDとRMDIRは同じコマンドです。誰かが同じ答えを述べてから9か月後にこの答えを投稿したので、なぜ人々はあなたにポイントを与えているのですか?
切り替え

51

これにより、フォルダーとファイルが削除され、フォルダーが残ります。

pushd "%pathtofolder%" && (rd /s /q "%pathtofolder%" 2>nul & popd)

4
この方法がわからない場合は、ディレクトリが再作成されることはありません。なしでは2>nul、「別のプロセスで使用されているため、プロセスはファイルにアクセスできません。」と出力します。
RokStrniša2013年

6
Windowsが一部のプログラムで使用されているファイルやフォルダーを削除できないのは嫌です。そして、私はあなたがこのワンライナーであなたの好意でそれを使ったことを愛しています。
andref

つまり、このuber-magicは、Windowsでフォルダを空にする方法ですか?印象的な:)
mlvljr 2015年

3
@mlvljr親フォルダーも保持する場合のみ。 RD /?フォルダを空にする簡単な方法を示します。
foxidrive 2015年

1
これは、開始位置に戻る必要がある場合は便利ですが、それ以外の場合は単にCD mypath && RD /S .十分です。ただし、パスを2回繰り返す必要があるのは好ましくありません。長いパスの場合は読みにくくなります。したがってset p="mypath"、最初にa を追加します。
アミットナイ

39
@ECHO OFF

SET THEDIR=path-to-folder

Echo Deleting all files from %THEDIR%
DEL "%THEDIR%\*" /F /Q /A

Echo Deleting all folders from %THEDIR%
FOR /F "eol=| delims=" %%I in ('dir "%THEDIR%\*" /AD /B 2^>nul') do rd /Q /S "%THEDIR%\%%I"
@ECHO Folder deleted.

EXIT

...指定されたディレクトリの下にあるすべてのファイルとフォルダを削除しますが、ディレクトリ自体は削除しません。


4
これは...あなたのパスに飛び出し、それは魔法のように動作..だけのシンプルな.. deletemyfoldercontents.batファイルを作る。..正しい答えでなければなりません
timbrown

3
DELコマンドラインミスオプションは/Aまた、隠された属性が設定されているファイルを削除すると%dir%\*のような二重引用符で囲む必要があり"%dir%\*"、スペースまたはこれらの文字のいずれかを含むディレクトリにも仕事に&()[]{}^=;!'+,`~。そして、FORコマンドラインに変更する必要がfor /F "eol=| delims=" %%I in ('dir "%dir%\*" /AD /B 2^>nul') do rd /Q /S "%dir%\%%I"あるためのための隠された属性セットで無視ディレクトリ。オプション付きのDIRはすべてのディレクトリを名前だけで/AD /B出力します。ところで:は環境変数の良い名前ではありません。dir
Mofi

1
サブフォルダは削除されません
RMiranda

1
@RMiranda、私のテストでは、OPが要求したとおりに動作します。サブフォルダが削除されない場合はありますか?
thepip3r 2018年

この回答は、「「このファイル/フォルダーはすでに使用されています」のようなエラーが発生する可能性がある...」という要件に対処していますか??
Peter Mortensen

30
CD [Your_Folder]
RMDIR /S /Q .

エラーメッセージが表示され、RMDIRコマンドは現在のフォルダーにアクセスできないため、削除できません。

更新

この有用なコメントから(Moritz Bothに感謝)、&&間に追加してもかまいRMDIRません。そのため、CDコマンドが失敗した場合(たとえば、ディレクトリ名の入力ミス)は実行されません。

CD [Your_Folder] && RMDIR /S /Q .

Windowsのコマンドラインリファレンス

/ S:ディレクトリツリー(すべてのファイルを含む、指定されたディレクトリとそのすべてのサブディレクトリ)を削除します。

/ Q:クワイエットモードを指定します。ディレクトリツリーを削除するときに確認を求めません。(/ qは/ sが指定されている場合にのみ機能することに注意してください。)


1
これはtempを空にするのに最適ですが、それcd [Your_Folder]は非常に重要です
sage

5
これが正しい解決策です。&&改行の代わりにコマンドの間に追加すると、CDが壊れても安全です。
モリッツ両方

これはシンプルで正しいソリューションです。Azureコマンドシェルでも動作します!
フィリップ

かなり悪い解決策...たとえば、svn updateでこのコマンドラインを削除する必要があります-更新svnを実行する前に、すべてのファイルとフォルダーを削除したいと思います。チェックインされたアイテムのみです。RMDIR / S / Qを実行しています。また、SVNリンクが削除され、フォルダーがsvnフォルダーではなくなります
Dominik Lemberger '26

これは前の4つの回答とどう違うのですか?
Peter Mortensen

9

RDはREMOVE Directoryの略です。

/ S:フォルダー自体に加えて、すべてのファイルとサブフォルダーを削除します。これを使用して、フォルダーツリー全体を削除します。

/ Q:静か-YN確認を表示しません

例:

RD /S /Q C:/folder_path/here

1
意味/S/Q意味を説明する唯一の存在であることに賛成
SourceVisor 2017年

2
いいえ。これrdrmdir、ディレクトリと同等であり、ディレクトリ自体を削除しますが、OPが必要とするものではありません。
WesternGun 2017年

この回答は、「「このファイル/フォルダーはすでに使用されている」などのエラーが発生する可能性がある...」という要件に対応していますか?たとえば、続行するのではなく、完全に中止しますか?
Peter Mortensen

8

私はPowershellを使用しています

Remove-Item c:\scripts\* -recurse

フォルダー自体ではなく、フォルダーの内容が削除されます。


rhellemの答えは最近ですが、実際にこれを行う唯一の答えです。(選択ではなく、Win 8.1)
philologon 2017

2
バッチコマンドラインから:powershell -Command "Remove-Item 'PathToMyDirectory\*' -Recurse -Force"
Rosberg Linhares

「*」が必要であるか、フォルダを削除することに注意してください。
mhenry1384

7

2018年6月1日に掲載さと回答のいずれも、例外とによって投稿単一のコマンドラインのfoxidrive、実際にすべてのファイルとすべてのフォルダ/ディレクトリを削除しません%PathToFolder%。それが、フォルダーのすべてのファイルとサブフォルダーを削除する非常にシンプルな単一のコマンドラインでさらに1つの回答を投稿する理由であり、DELを使用して他のすべての回答が2018-06-01に投稿された理由を説明するより複雑なソリューションを持つバッチファイルも同様ですそしてFORRDは、完全にフォルダをクリーンアップできませんでした。


もちろん、バッチファイルでも使用できる単純な単一のコマンドラインソリューション:

pushd "%PathToFolder%" 2>nul && ( rd /Q /S "%PathToFolder%" 2>nul & popd )

このコマンドラインには、3つのコマンドが順番に実行されます。

最初のコマンドPUSHDはスタック上の現在のディレクトリパスをプッシュし、次に%PathToFolder%コマンドプロセスを実行するための現在のディレクトリを作成します。

コマンド拡張はデフォルトで有効になっているため、これはデフォルトでUNCパスでも機能します。この場合、PUSHDは指定されたネットワークリソースを指す一時的なドライブ文字を作成し、新しく定義されたドライブ文字を使用して現在のドライブとディレクトリを変更します。

指定されたディレクトリがまったく存在しない場合、PUSHDはSTDERRを処理するために次のエラーメッセージを出力します。

指定されたパスが見つかりません。

このエラーメッセージは2>nul、デバイスNULにリダイレクトすることで抑制されます。

次のコマンドRDは、現在のコマンドプロセスの現在のディレクトリを指定されたディレクトリに変更できた場合、つまり指定されたディレクトリが存在する場合にのみ実行されます。

オプション付きのコマンドRDは、指定されたディレクトリーに隠し属性または読み取り専用属性が設定されたファイルまたはフォルダーが含まれている場合でも、すべてのサブディレクトリーとともに静かディレクトリー/Q/S削除します。システム属性は、ファイルまたはフォルダーの削除を決して防ぎません。

削除されないもの:

  1. 実行中のプロセスの現在のディレクトリとして使用されるフォルダ。実行中のプロセスの現在のディレクトリとしてフォルダが使用されている場合、そのようなフォルダへのフォルダツリー全体を削除することはできません。

  2. 実行中のアプリケーション/プロセスによって開かれている間のファイルの削除を防ぐために、ファイルを開くときにファイルアクセス許可が設定されている実行中のプロセスによって現在開かれているファイル。このような開かれたファイルは、開かれたファイルへのフォルダツリー全体の削除も防ぎます。

  3. 現在のユーザーがファイル/フォルダーを削除するために必要な(NTFS)権限を持っていないファイル/フォルダー。これにより、このファイル/フォルダーへのフォルダーツリーも削除されなくなります。

フォルダーを削除しない最初の理由は、このコマンドラインで、フォルダー自体ではなく、指定したフォルダーのすべてのファイルとサブフォルダーを削除するために使用されます。このフォルダーは、コマンドプロセスを実行するために一時的に現在のディレクトリになり、フォルダー自体の削除が防止されます。もちろんこれにより、コマンドRDによってエラーメッセージが出力されます。

別のプロセスによって使用されているため、プロセスはファイルにアクセスできません。

ファイルはここでは間違った用語です。実際には、フォルダーは別のプロセス(コマンドRDを実行した現在のコマンドプロセス)によって使用されているためです。まあ、実際には、フォルダーはファイルシステムの特別なファイルで、このエラーメッセージを説明するファイル属性ディレクトリがあります。しかし、ファイルシステム管理に深く入り込みたくありません。

このエラーメッセージは、上記の3つの理由により発生する可能性のある他のすべてのエラーメッセージと同様に2>nul、ハンドルSTDERRからデバイスNULにリダイレクトすることで抑制されます。

3番目のコマンドPOPDは、コマンドRDの終了値とは関係なく実行されます。

POPDは、PUSHDによってプッシュされたディレクトリパスをスタックからポップし、コマンドプロセスを実行するための現在のディレクトリをこのディレクトリに変更します。つまり、初期の現在のディレクトリを復元します。POPDはによって作成された一時的なドライブ文字を削除PUSHD UNCフォルダパスの場合を。

注: 初期の現在のディレクトリが、削除するディレクトリのサブディレクトリで、存在しないものである場合、POPD警告なしに初期の現在のディレクトリを復元できません。この特別なケースで%PathToFolder%は、現在のディレクトリのままです。したがって、のサブディレクトリからではなく、上記のコマンドラインを実行することをお勧めします%PathToFolder%

もう一つの興味深い事実: 私はまた、ローカルディレクトリを共有することにより、UNCパスを使用してコマンドラインを試みたC:\Temp共有名とTempし、UNCパス使用して\\%COMPUTERNAME%\Temp\CleanTest環境変数に割り当てられたPathToFolderコマンドラインを実行している上、現在のディレクトリが共有ローカルのサブディレクトリがある場合は、Windows 7上をフォルダは、UNCパスを使用してアクセス、すなわちC:\Temp\CleanTest\Subfolder1Subfolder1によって削除されるRD、次のPOPDは、製造中に静かに失敗しC:\Temp\CleanTest\Subfolder1、再度、その結果、現在のディレクトリZ:\CleanTest実行コマンド処理のための現在のディレクトリとして残りを。したがって、この非常に特殊なケースでは、一時ディレクトリは、現在のディレクトリが次のように変更されるまで残ります。cd /D %SystemRoot%実際に存在するローカルディレクトリに。残念ながら、POPDは、初期の現在のディレクトリの復元に失敗した場合、0より大きい値で終了せず、POPDの終了コードだけを使用してこの非常に特殊なエラー状態を検出できませ。ただし、UNCパスは通常ローカルファイルやフォルダーへのアクセスには使用されないため、この非常に特殊なエラーが発生することはないと考えられます。

使用するコマンドをさらに理解するには、コマンドプロンプトウィンドウを開き、そこで次のコマンドを実行し、各コマンドに表示されるヘルプを非常に注意深く読んでください。

  • pushd /?
  • popd /?
  • rd /?

Windowsバッチファイルを使用して複数のコマンドを含む1行で、ここ&&&使用される演算子について説明します。


次は、私たちがコマンドを使用して、バッチファイルソリューションに見てみましょうDELを内のファイルを削除する%PathToFolder%と、FORRDの中にサブフォルダを削除します%PathToFolder%

@echo off
setlocal EnableExtensions DisableDelayedExpansion

rem Clean the folder for temporary files if environment variable
rem PathToFolder is not defined already outside this batch file.
if not defined PathToFolder set "PathToFolder=%TEMP%"

rem Remove all double quotes from folder path.
set "PathToFolder=%PathToFolder:"=%"

rem Consisted the folder path only of double quotes?
if not defined PathToFolder goto EndCleanFolder

rem Remove a backslash at end of folder path.
if "%PathToFolder:~-1%" == "\" set "PathToFolder=%PathToFolder:~0,-1%"

rem Consisted folder path only of a backslash (with one or more double quotes)?
if not defined PathToFolder goto EndCleanFolder

rem Delete all files in specified folder including files with hidden
rem or read-only attribute set, except the files currently opened by
rem a running process which prevents deletion of the file while being
rem opened by the application, or on which the current user has not
rem the required permissions to delete the file.
del /A /F /Q "%PathToFolder%\*" >nul 2>nul

rem Delete all subfolders in specified folder including those with hidden
rem attribute set recursive with all files and subfolders, except folders
rem being the current directory of any running process which prevents the
rem deletion of the folder and all folders above, folders containing a file
rem opened by the application which prevents deletion of the file and the
rem entire folder structure to this file, or on which the current user has
rem not the required permissions to delete a folder or file in folder tree
rem to delete.
for /F "eol=| delims=" %%I in ('dir "%PathToFolder%\*" /AD /B 2^>nul') do rd /Q /S "%PathToFolder%\%%I" 2>nul

:EndCleanFolder
endlocal

バッチファイルは、最初に、PathToFolder二重引用符のないフォルダーパスと最後にバックスラッシュのない環境変数が実際に定義されていることを確認します。最後のバックスラッシュは問題にはなりませんが、PathToFolderバッチファイルの実行中にの値が他の文字列と連結されるため、フォルダーパスの二重引用符は問題になる可能性があります。

重要なのは次の2行です。

del /A /F /Q "%PathToFolder%\*" >nul 2>nul
for /F "eol=| delims=" %%I in ('dir "%PathToFolder%\*" /AD /B 2^>nul') do rd /Q /S "%PathToFolder%\%%I" 2>nul

コマンドDELは、指定されたディレクトリ内のすべてのファイルを削除するために使用されます。

  • オプション/Aは、DELがオプションを使用せずに無視する隠し属性を持つファイルを含む実際にすべてのファイルを処理するために必要/Aです。
  • このオプション/Fは、読み取り専用属性が設定されているファイルを強制的に削除するために必要です。
  • このオプション /Qは、複数のファイルを本当に削除する必要がある場合に、ユーザーにプロンプ​​トを表示せずに複数のファイルを静かに削除するために必要です。
  • >nulSTDOUTを処理するために記述されたファイル名の出力を、ファイルが現在開かれているか、ユーザーがファイルを削除する権限を持っていないため削除できないデバイスNULにリダイレクトする必要があります。
  • 2>nul削除できない各ファイルのエラーメッセージ出力をハンドルSTDERRからデバイスNULにリダイレクトする必要があります。

コマンドFORおよびRDは、指定されたディレクトリー内のすべてのサブディレクトリーを削除するために使用されます。ただし、この場合for /DFORは非表示の属性が設定されたサブディレクトリを無視するため、使用されません。そのため、for /Fを使用してバックグラウンドで開始された別のコマンドプロセスで次のコマンドラインを実行します%ComSpec% /c

dir "%PathToFolder%\*" /AD /B 2>nul

dir/B、attributeのあるディレクトリエントリD、つまり、パスのない隠し属性のような他の属性に依存しない、指定されたディレクトリ内のすべてのサブディレクトリの名前のため、ベアフォーマットで出力します。ハンドルSTDERRからディレクトリが見つからない2>nul場合にDIRが出力するエラーメッセージをデバイスNULにリダイレクトするために使用されます。

リダイレクト演算子には>、キャレット文字でエスケープする必要があります^に、FORの Windowsコマンド・インタプリタは、コマンドを実行する前に、このコマンドラインを処理するときにリテラル文字として解釈されるコマンドラインFOR埋め込ま実行するdir開始した別のコマンド・プロセスにコマンドラインをバックグラウンドで。

FORは、開始されたコマンドプロセスのSTDOUTを処理するために書き込まれたキャプチャされた出力を処理します。これは、パスなしのサブディレクトリの名前であり、二重引用符で囲まれていません。

オプション付きのFORは、オプション付きのDIRが空行を出力/Fしないため、ここでは発生しない空行を無視します。/B

FORは、デフォルトの行末文字であるセミコロンで始まる行も無視します。ディレクトリ名はセミコロンで始めることができます。そのためeol=|、縦棒文字を行末文字として定義するために使用されます。これは、ディレクトリまたはファイルがその名前に持つことはできません。

FORは、スペースと水平タブを区切り文字として使用して行を部分文字列に分割し、最初のスペース/タブ区切りの文字列のみを指定されたループ変数に割り当てますI。ディレクトリ名には1つ以上のスペースを含めることができるため、この分割動作はここでは不要です。したがってdelims=、区切り記号の空のリストを定義して、行分割動作を無効にし、ループ変数に割り当てられます。これはI、常に完全なディレクトリ名です。

コマンドFORは、パスなしで各ディレクトリ名に対してコマンドRDを実行します。これが、RDコマンドラインでフォルダーパスをもう一度指定する必要がある理由であり、サブフォルダー名と連結されます。

使用するコマンドとその機能を理解するには、コマンドプロンプトウィンドウを開いて次のコマンドを実行し、各コマンドに対して表示されるすべてのヘルプページをよく読みます。

  • del /?
  • dir /?
  • echo /?
  • endlocal /?
  • for /?
  • goto /?
  • if /?
  • rd /?
  • rem /?
  • set /?
  • setlocal /?

5

使用メモ帳はテキストドキュメントを作成してコピーする/これを貼り付けます。

rmdir /s/q "%temp%"
mkdir "%temp%"

[ 名前を付けて保存]とファイル名を選択:

delete_temp.bat

ファイルの種類:すべてのファイルを保存してSaveボタンをクリックします。

あらゆる種類のアカウント(管理者または標準ユーザー)で機能します。実行するだけ!

この例では一時変数を使用していますが、他の変数も使用できます。PS:Windows OSのみ!


非常に簡単でクリーンなソリューション
Carlos Liu

4

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

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"

はい、これは正しいです。2つのステップでなければなりません。これは、上記の投票数の多い回答と比較して、理由を説明しているため、より多くの投票に値します。
WesternGun 2017年

DELコマンド・ライン・ミスオプション/Aも削除するには、隠された属性セットとオプションを指定してファイルを/F読み取り専用の属性セットと最後の引数を二重引用符の付いたファイルも削除します。だからdel /A /F /Q "PATH_TO_FOLDER\*"良いでしょう。そして、FORコマンドラインに変更する必要がfor /F "eol=| delims=" %%I in ('dir "PATH_TO_FOLDER\*" /AD /B 2^>nul') do rd /Q /S "PATH_TO_FOLDER\%%I"あるためのための隠された属性セットで無視ディレクトリ。オプション付きのDIRはすべてのディレクトリを名前だけで/AD /B出力します。PATH_TO_FOLDER
Mofi

これは以前の回答(の一部)とどう違うのですか?
Peter Mortensen

4

次のコマンドを使用して、すべてのコンテンツと親フォルダー自体を削除することにより、これを実行できます。

RMDIR [/S] [/Q] [drive:]path            

これは前の2つの回答とどう違うのですか?
Peter Mortensen

この回答は、「「このファイル/フォルダーはすでに使用されています」のようなエラーが発生する可能性がある...」という要件に対処していますか??
Peter Mortensen

1

私はこれらのアプローチのいくつかを試しましたが、どれも正しく機能しませんでした。

私は、サイトのWindowsコマンドラインでこの2段階のアプローチを見つけました。

forfiles /P %pathtofolder% /M * /C "cmd /c if @isdir==FALSE del @file"

forfiles /P %pathtofolder%  /M * /C "cmd /c if @isdir==TRUE rmdir /S /Q @file"

それは私が必要とし、OPによって指定されたとおりに機能しました。


2つのコマンドラインを1つのコマンドラインに組み合わせることができますforfiles /P "%pathtofolder%" /M * /C "%SystemRoot%\System32\cmd.exe /C if @isdir==FALSE (del /A /F @file) else rd /Q /S @file" 。DELオプション/Aが追加され、非表示属性が設定されたファイルも削除されます。そうしないと、DELはの各非表示ファイルに対して見つからないエラーメッセージを出力します%pathtofolder%DELオプション/Fが追加され、読み取り専用属性が設定されたファイルも削除されます。%pathtofolder%そうしないと、DELがアクセス拒否エラーメッセージを出力します。
Mofi

内のcmd.exe各ファイルおよび各ディレクトリのインスタンスを開始するため、このソリューションは、ここに掲載されているすべての不完全なソリューションの中で最も遅いものです%pathtofolder%。利点は、FORFILESが、FORと同様に隠し属性が設定されているディレクトリを無視しないことです。
Mofi

「それは私が必要とまったく働いていたとOPで指定されたとして。」「「このファイル/フォルダはすでに使用されています」などのエラーが発生する可能性がある...」という要件をテストしましたか?その場合、続行してそのファイル/フォルダをスキップする必要があります。
Peter Mortensen

0
@ECHO OFF
rem next line removes all files in temp folder
DEL /A /F /Q /S "%temp%\*.*"
rem next line cleans up the folder's content
FOR /D %%p IN ("%temp%\*.*") DO RD "%%p" /S /Q

2行目は、Windowsの一時ディレクトリ内のすべてのフォルダーから各ファイルのファイルを削除し、3行目は、その内容を含むディレクトリをクリーンアップします。
Robie

FORコマンドラインに変更する必要がfor /F "eol=| delims=" %%I in ('dir "%TEMP%\*" /AD /B 2^>nul') do rd /Q /S "%TEMP%\%%I"あるためでFOR隠し属性が設定されて無視ディレクトリ。オプション付きのDIRはすべてのディレクトリを名前だけで/AD /B出力します。%TEMP%
Mofi

DELのドキュメント。/ Fで正しい方向に進んでいると思います。「読み取り専用設定を無視して削除します(強制)」
Peter Mortensen

-10

使用する:

del %pathtofolder%\*.*   /s /f  /q

これにより%pathtofolder%、読み取り専用ファイルを含む、のすべてのファイルとサブフォルダが削除され、確認のプロンプトは表示されません。


9
これで、%pathtofolder%に空のサブフォルダーが残ります。
DH

35
%pathtofolder%内のサブフォルダーは削除されません。とても悪い私はこの誤った答えに投票する評判がありません
Vitalii Korsakov

1
Vitalii Korsakovが指摘したように、これによりすべてのファイルとファイルがサブディレクトリから削除されますが、OPが削除する方法も尋ねたサブディレクトリはそのまま残ります。
Fuzz Evans

6
このコマンドは空のフォルダーを残しますが、受け入れられた回答よりも、要求されたものに非常に近くなります。もちろん、これは状況によって異なります。私の場合、ルートディレクトリに残されたファイルではなく、空のフォルダーを使用します。
MarcusUA 2013

しかし、他のクライアントマシンがそのフォルダーへの書き込みアクセス権を持つ共有ドライブを開いたときに、ネットワーク共有で開いていたフォルダーとサブフォルダーを削除するにはどうすればよいですか。psfileとnet filesコマンドはファイルセッションを閉じますが、数秒後に再び作成されます。サーバーのそのユーザーの別のセッションを自動的に...
user1954762
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.