フォルダーを「コマンドプロンプト」で削除する方法

コマンドラインを使ったディレクトリの削除は、Windows管理の基本スキルです。GUIを使わずにファイルシステムを迅速にクリアできます。ここでは、従来のコンソールコマンドから、詳細なオブジェクトフィルタリングを備えた高度なPowerShellパイプラインまで、技術的に正確な手法を解説します。

方法1: RMDIR (RD) コマンドを使用したディレクトリ削除

従来のコマンドプロンプト環境でフォルダを直接削除するには、標準ユーティリティRMDIR(または短縮形RD)を使用します。追加パラメータがない場合は空のディレクトリしか削除できませんが、/Sおよび/Qスイッチを追加することで、確認を求めずに、あらゆる階層構造を再帰的に完全削除するツールに変わります。

  • 「コマンドプロンプト」を管理者として開きます。
  • 空のフォルダを削除するには、以下を入力します:

RMDIR "ディレクトリのフルパス"

または

RD "ディレクトリのフルパス"

フォルダにファイルやサブディレクトリが含まれている場合、スイッチ/Sを追加して再帰的な全コンテンツ削除を有効にします:

RMDIR /S "ディレクトリのフルパス"

「Y/N?」のような標準の確認プロンプトを抑制するには、/Q(Quiet)スイッチを使用します:

RMDIR /S /Q "ディレクトリのフルパス"

スイッチはまとめて記述することも可能です:

RD /S /Q "C:\Path\To\Folder"

方法2: PowerShellとRemove-Itemコマンドの使用

PowerShellシェルは、ファイルとフォルダの両方を削除できる汎用コマンドレットRemove-Itemを提供します。従来のcmd.exeに対する主な利点は、隠しファイルやシステムオブジェクトの強制削除、および操作のステップバイステップ制御のための拡張パラメータセットのサポートです。

  • PowerShellを管理者権限で起動します。
  • 空のディレクトリを削除するには以下を実行します:

Remove-Item "ディレクトリのフルパス"

ディレクトリが空でない場合、-Recurseスイッチが必須です。これにより、チェーン下のすべてのネストされたアイテムが削除されます:

Remove-Item "ディレクトリのフルパス" -Recurse

「読み取り専用」、「隠し」、「システム」などの属性制限を克服し、アクセスエラーを回避するには、-Forceスイッチを追加します:

Remove-Item "C:\Path\To\Folder" -Recurse -Force

削除される各オブジェクトを視覚的に制御する必要がある場合は、-Confirmパラメータを使用します。システムは各アイテムに対して[Y] はい / [N] いいえダイアログを表示します:

Remove-Item "ディレクトリのフルパス" -Recurse -Confirm

実際の変更を加えずに削除対象を安全にシミュレーションするには、-WhatIfパラメータを適用します:

Remove-Item "ディレクトリのフルパス" -Recurse -WhatIf

方法3: パイプラインを使用したPowerShellでの削除

PowerShellのパイプラインは、複数のコマンドレットを1つのチェーンに結合し、オブジェクトを選択的に削除することを可能にします。このアプローチは、特定のフォルダだけでなく、名前、作成日、サイズ、属性などの複雑な基準でフィルタリングされたディレクトリセットを消去する必要がある場合に不可欠です。

全体的な構文は次のとおりです:

Get-ChildItem -Path "検索パス" -Directory | Where-Object {条件} | Remove-Item -Recurse -Force

  • Get-ChildItemは指定された場所にあるすべてのフォルダ(-Directory)を収集します。
  • Where-Objectは、中括弧{}内の条件に一致するオブジェクトのみを通過させます。
  • Remove-Item-Recurse-Forceスイッチを使用して、パイプラインで渡されたすべてのものを最終的に削除します。

PowerShellでのフォルダーフィルタリング条件例

Where-Objectブロックでディレクトリを正確に選択するために、以下のフィルタリングルールが適用されます:

フォルダー名でフィルタ: ワイルドカード*(任意の文字数)を含む-like演算子、または正確な比較-eqを使用します。

# 名前に"backup"を含むフォルダを削除
Where-Object { $_.Name -like "*backup*" }

# "temp"という正確な名前のフォルダを削除
Where-Object { $_.Name -eq "temp" }

作成日でフィルタ: CreationTimeプロパティと-lt(より小さい)または-gt(より大きい)比較を使用します。

# 30日以上前に作成されたフォルダを削除
Where-Object { $_.CreationTime -lt (Get-Date).AddDays(-30) }

# 特定の日に作成されたフォルダを削除
Where-Object { $_.CreationTime.Date -eq (Get-Date "2024-01-15").Date }

最終更新日でフィルタ: LastWriteTimeプロパティを使用します。

# 1年以上変更されていないフォルダ
Where-Object { $_.LastWriteTime -lt (Get-Date).AddYears(-1) }

属性でフィルタ: -matchを使用してビットマスクAttributesを分析します。

# 隠しフォルダのみ
Where-Object { $_.Attributes -match "Hidden" }

# システム属性を持たないフォルダ
Where-Object { -not ($_.Attributes -match "System|Hidden|ReadOnly") }

サイズでフィルタ: サイズ計算には、ForEach-Objectでの中間処理とMeasure-Objectでのファイル長の合計測定が必要です。1GBを超えるフォルダを削除する例:

Get-ChildItem -Directory | ForEach-Object {
$size = (Get-ChildItem $_.FullName -Recurse | Measure-Object -Property Length -Sum).Sum
if ($size -gt 1GB) { Remove-Item $_.FullName -Recurse -Force }
}

条件の組み合わせ: 論理演算子-and(かつ)と-or(または)を使用して複数の基準を結合します。

# 1週間以上変更されていない一時フォルダを削除
Where-Object { $_.Name -like "*temp*" -and $_.LastWriteTime -lt (Get-Date).AddDays(-7) }

方法4: 互換モードでのDELTREEコマンドの使用

DOSユーザーに馴染み深い従来のDELTREEコマンドはWindowsには含まれていませんが、その機能は簡単にエミュレートできます。DOSKEYでマクロを作成すると、RMDIRを再帰設定で短い一言で呼び出せるようになり、ディレクトリ削除の使い慣れた構文が復元されます。

  • 従来の「コマンドプロンプト」セッションを開きます。
  • DELTREEという単語をRMDIR /S /Qコマンドにバインドする一時マクロを作成します:DOSKEY:
DELTREE=RMDIR /S /Q $*

シンボル$*は、DELTREEの後に指定したすべての引数をマクロに渡します。

これで、確認なしの再帰的なフォルダ削除は次のコマンドで実行されます:

DELTREE "C:\Path\To\Folder"

このマクロは現在のセッション内でのみ有効です。コンソールウィンドウを閉じると、作成されたバインディングは無効になります。永続的な使用が必要な場合は、cmd.exeの自動読み込みレジストリパラメータにマクロを記述する必要があります。

最新の説明書