rd/rmdir - フォルダの削除

にメンテナンス済み
目次

コマンドプロンプトやバッチファイルでフォルダを削除するには、rmdirコマンド(省略形はrd)を使用します。

削除といっても、ファイルとフォルダ、フォルダが空かどうかで使うコマンドや指定するオプションが異なります。

ここでは、フォルダを削除する方法について、基本的な使い方からオプションの設定方法、削除できないときの対処法まで説明します。

ファイルを削除する場合は別のコマンドを使用します。詳しくは以下の記事を参照してください。

フォルダを削除する方法

フォルダを削除するためには、rmdirコマンドを使用します。rdと入力しても同じ結果になります。

rmdirコマンドは、以下のように使用します。

rmdir [/s] [/q] [<ドライブレター>:]<フォルダのパス>

最も基本的な使い方は、rmdirに続けて削除したいフォルダのパスを指定します。

以下は、カレントディレクトリ直下のtestフォルダを削除する例です。

- □ ×
コマンド プロンプトのアイコン
コマンド プロンプト
Microsoft Windows [Version xx.x.xxxxx.xxx]
(c) 2026 Ribbit App Development All rights reserved.
 
C:\users\user>rmdir test

実行すると、testフォルダが削除されます。

rmdirコマンドは、オプションなしでは空のフォルダしか削除できません。フォルダの中にファイルやフォルダがある場合は、以下のエラーになります。

- □ ×
コマンド プロンプトのアイコン
コマンド プロンプト
Microsoft Windows [Version xx.x.xxxxx.xxx]
(c) 2026 Ribbit App Development All rights reserved.
 
C:\users\user>
rmdir test
ディレクトリが空ではありません。

空でないフォルダを削除する方法は、次のオプションの項目で説明します。

パスに空白が含まれる場合は、rmdir "my folder"のように二重引用符で囲みます。

rmdirコマンドのオプション

rmdirコマンドには、以下のオプションがあります。

オプション説明
/s指定したフォルダ自体と、その中のすべてのファイルとサブフォルダを削除する
/q確認メッセージを表示せずに削除する(/sと一緒に使用する)

/sオプションを指定すると、フォルダの中身ごとまとめて削除できます。

/sを指定した場合は、実行時に以下のような確認メッセージが表示され、Yを入力すると削除されます。

- □ ×
コマンド プロンプトのアイコン
コマンド プロンプト
Microsoft Windows [Version xx.x.xxxxx.xxx]
(c) 2026 Ribbit App Development All rights reserved.
 
C:\users\user>rmdir /s test
test、よろしいですか (Y/N)?

このメッセージを表示させたくない場合は、/sオプションと併せて/qオプションを指定します。

バッチファイル内でrmdir /sを使用する場合は、確認メッセージの時点でプログラムが停止してしまうため、/qオプションを指定することをおすすめします。

チェック

rmdir /s /qで削除したフォルダは、ごみ箱に移動されず、元に戻せません。 パスの指定を誤ると重要なデータを失うため、特に変数でパスを組み立てる場合は、値が空でないことを確認してから実行してください。

フォルダを削除する具体例

バッチファイルで作業後のフォルダを削除する

バッチファイルで一時フォルダを作成して処理を行うようなケースでは、作業が終わった後にrmdirコマンドで一時フォルダを削除します。

@echo off
setlocal

mkdir workspace

rem ...ここで作業を行う...

rmdir /s /q workspace

endlocal

一時フォルダ内にはファイルが含まれている可能性があるため、/sオプションと/qオプションを指定しています。

指定されたパスがフォルダであれば削除する

入力されたパスがフォルダであれば削除する処理は、以下のように記述できます。

sample.cmd
@echo off
setlocal

set /p target=削除するフォルダのパスを入力してください。

if not defined target (
  echo パスが入力されていません。
  exit /b 1
)

if exist "%target%\" (
  rmdir /s "%target%"
  if exist "%target%\" (
    echo %target% は削除されませんでした。
  ) else (
    echo %target% を削除しました。
  )
) else (
  echo %target% はフォルダとして存在しません。
)

endlocal

if exist "パス\"のように末尾に\を付けると、ファイルではなくフォルダが存在する場合のみ条件が成立します。

何も入力されないと%target%が空になり、"\"(ドライブのルート)が存在すると判定されてしまうため、if not definedで先に入力の有無を確認しています。また、確認メッセージでNを選んだ場合に「削除しました」と表示されないよう、削除後にもう一度フォルダの有無を確認しています。

また、変数名にpathを使うと、実行ファイルの検索に使われる環境変数PATHを上書きしてしまうため、targetのような別の名前を使用しています。

上記のコードを実行すると、削除するフォルダの入力と、削除の確認メッセージが表示されます。

- □ ×
コマンド プロンプトのアイコン
コマンド プロンプト
Microsoft Windows [Version xx.x.xxxxx.xxx]
(c) 2026 Ribbit App Development All rights reserved.
 
C:\users\user>sample.cmd
削除するフォルダのパスを入力してください。test
test、よろしいですか (Y/N)? Y
test を削除しました。
C:\users\user>

フォルダを削除できないときは

rmdirでフォルダを削除できない主な原因は、以下の通りです。

  • フォルダが空ではない:/sオプションを指定します。
  • フォルダ内のファイルを他のアプリケーションが開いている:アプリケーションを終了してから再実行します。
  • カレントディレクトリが削除対象のフォルダになっている:別のフォルダにcdで移動してから実行します。
  • 削除する権限がない:管理者として実行したコマンドプロンプトで試します。

練習問題

練習問題

バッチファイル中で、複数のファイルを含むフォルダを削除する場合、 後続する処理を止めることなく、フォルダとフォルダ内のファイルを全て削除するコマンドを選択してください。

正しいものを 1 つ選んでください。

  1. rmdir %userprofile%\documents\disposable
  2. rmdir /s %userprofile%\documents\disposable
  3. rmdir /s /q %userprofile%\documents\disposable
#コマンドプロンプト #バッチファイル #コマンドライン #コマンド #フォルダ削除