web-dev-qa-db-ja.com

Windowsコマンドプロンプトを使用して空のフォルダを削除するにはどうすればよいですか?

Windowsコマンドプロンプトを使用して、アプリケーションフォルダーからすべての空のフォルダーを削除する必要がありますか?

そのようなbatファイルを作成するにはどうすればよいですか?

私を助けてください。

68
DEVOPS
for /f "usebackq" %%d in (`"dir /ad/b/s | sort /R"`) do rd "%%d"

from: http://blogs.msdn.com/b/oldnewthing/archive/2008/04/17/8399914.aspx

もちろん、コマンドを実行する前に、削除せずに最初にテストします。また、スペース付きのフォルダーを含むコメントの修正版も次のとおりです。

 for /f "usebackq delims=" %%d in (`"dir /ad/b/s | sort /R"`) do rd "%%d"

追伸ブログ投稿に役立つコメントが他にもありますので、試してみる前にそれらも読んでください

49
corroded

ROBOCOPYを使用できます。非常にシンプルで、大きな階層内の空のフォルダーを削除するためにも使用できます。

ROBOCOPY folder1 folder1 /S /MOVE

ここでは、他の(必要な)ファイルを別のフォルダーに移動するのではなく、空のフォルダーのみを削除する必要があるため、ソースと宛先の両方がfolder1です。 /Sオプションは、空のフォルダーのコピー(上記の場合は移動)をスキップします。また、ファイルが同じドライブ内で移動されるため、高速です。

115
Varun Sharma

より簡単な方法は、/ sスイッチを使用してxcopyを実行し、ディレクトリ構造全体のコピーを作成することです。/sのヘルプは、空のものを除いてディレクトリとサブディレクトリをコピーします。

xcopy dirA dirB /S

ここで、dirAは空のフォルダーを持つソースです。 DirBは空のフォルダーのないコピーになります

57
Dinesh Rajan

Usebackqは必要ありません:

FOR /F delims^= %%A IN ('DIR/AD/B/S^|SORT/R') DO RD "%%A"
15
tomasz86

同じ参照ページから腐食した回答に追加されるのはPowerShellバージョンです http://blogs.msdn.com/b/oldnewthing/archive/2008/04/17/8399914.aspx#8408736

Get-ChildItem -Recurse . | where { $_.PSISContainer -and @( $_ | Get-ChildItem ).Count -eq 0 } | Remove-Item

または、より簡潔に、

gci -R . | where { $_.PSISContainer -and @( $_ | gci ).Count -eq 0 } | ri

クレジットは投稿者に送られます

8
BozoJoe

コマンドラインから:/ R/D%1 in(*)do rd "%1"

(*)の/ R/D %% 1のバッチファイルでrd "%% 1"を実行

文書化されているかどうかはわかりませんが、W2K、XP、およびWin 7で機能します。また、常に機能するかどうかはわかりませんが、誤ってファイルを削除することはありません。

これは上記のハイブリッドです。 X日より古いすべてのファイルを削除し、指定されたパスの空のフォルダーを削除します。使用するには、単に日、フォルダパス、ドライブを設定します

@echo off
SETLOCAL
set days=30
set folderpath=E:\TEST\
set drive=E:

::Delete files
forfiles -p %folderpath% -s -d -%days% -c "cmd /c del /q @path "

::Delete folders
cd %folderpath%
%drive%
for /f "usebackq delims=" %%d in (`"dir /ad/b/s | sort /R"`) do rd "%%d"`
2
jcwhall

Windows用のUNIXインタープリター(CygwinまたはGit Bash)をインストールし、cmdを実行します。

/ path/to/directory -empty -type dを見つけます

To find them

/ path/to/directoryを検索-empty -type d -delete

To delete them

(実際にはwindows cmdプロンプトを使用していませんが、簡単で実行に数秒かかりました)

1
GreAce
@echo off
set /p "ipa= ENTER FOLDER NAME TO DELETE> "
set ipad="%ipa%"
IF not EXIST %ipad% GOTO notfound
IF EXIST %ipad% GOTO found
:found
echo DONOT CLOSE THIS WINDOW
md ccooppyy
xcopy %ipad%\*.* ccooppyy /s > NUL
rd %ipad% /s /q
ren ccooppyy %ipad%
cls
echo SUCCESS, PRESS ANY KEY TO EXIT
pause > NUL
exit 
:notfound
echo I COULDN'T FIND THE FOLDER %ipad%
pause
exit
0
PRADEESH

正常に動作します。これは、古いファイルを削除し、空のディレクトリを再帰的に削除する最良の方法です。次の.batファイルは、

forfiles /p [PATH] /s /m [FILE-PATTERN] /d -[DAYS] /c "cmd /c del @path"
for /f "delims=" %%d in ('dir [PATH] /s /b /ad ^| sort /r') do rd "%%d"

プレースホルダーは、次のように(引用符なしで)置き換える必要があります。

[DAYS] = Max. age of the files in days, e.g. “10”
[PATH] = Path to search for old files and empty folders, e.g. “C:\Backup\”
[FILE-PATTERN] = Pattern that matches files to delete, e.g. “*.bkp”

スクリプトは、Windows 7およびWindows Server 2003で正常にテストされています。

0
sathish anish