ファイルを削除する

Windowsではdelコマンドでファイルを削除する。またはeraseコマンドを使ってもよい。

名前が異なるだけでdelコマンドとeraseコマンドはまったく同じ動きをする。delコマンドまたはeraseコマンドの主な使い方は次のとおり。

delコマンドの使い方

del [/p] [/f] [/s] [/q] [/a[:]属性] パス

delコマンドの使い方

erase [/p] [/f] [/s] [/q] [/a[:]属性] パス

Linuxで言えばrmコマンドに相当するコマンドなのだが、ディレクトリ(フォルダ)の扱いが大きく異なる。rmコマンドではディレクトリ(フォルダ)の削除も行うことができるが、delコマンド(eraseコマンド、以降はdelコマンドで統一)ではフォルダ(ディレクトリ)は削除することができない。あくまでも削除できるのはファイルだけだ。再帰的にファイルの削除を行うこともできるのだが、その場合でもフォルダ(ディレクトリ)は削除することができない。

delコマンドで指定できるパラメータは次のとおり。

パラメータ 内容
パス ファイルやディレクトリのパス。複数指定することが可能。ワイルドカードを使うこともできる。ディレクトリが指定された場合には、ディレクトリ以下のファイルがすべて削除される
/p 削除する前に確認プロンプトを表示
/f リード・オンリーファイルを強制的に削除
/s カレントディレクトリから指定されたファイルをすべて削除するとともに、すべてのサブディレクトリからファイルを削除。削除したファイルは一覧表示される
/q 削除確認の表示などは行わない
/a:属性 ファイル属性に基づいてファイルを削除する
属性 内容
r リード・オンリー・ファイル
h 隠しファイル
i コンテンツインデックス化されていないファイル
s システムファイル
a アーカイブ向けファイル
l リパースポイント
- notを意味するプレフィックス

Linuxのrmコマンドに慣れているとWindowsのdelコマンドの動きは少々不思議な感じがするかもしれない。実際の動作を見ながらdelコマンドの動きを追ってみよう。

delコマンドの実行例

ファイルの削除に関してはdelコマンドもrmコマンドも大差がない。次のように引数にファイルを指定してdelコマンドを実行すればファイルを削除することができる。

delコマンドによるファイルの削除

次にディレクトリ(フォルダ、以降はディレクトリで統一)の削除を行ってみよう。次のように空のディレクトリを指定してdelコマンドを実行すると、何も行われないことがわかる。ディレクトリを指定してdelコマンドを実行したのだが、エラーになるわけでもなく、何も削除されないまま処理が完了する。

delコマンドで空のディレクトリを削除しようとしても何も削除されない

では次にディレクトリの中にファイルや、さらにファイルを配下に持つディレクトリを含んだディレクトリを削除してみよう。次のようにsample_dir2にはファイルやディレクトリが含まれており、含まれているディレクトリにはさらにファイルが含まれている。

sample_dir2のディレクトリ構造

sample_dir2のディレクトリ構造

sample_dir2/
├── sample1.txt
├── sample2.txt
├── sample3.txt
├── subdir1/
│   ├── sample1.txt
│   ├── sample2.txt
│   └── sample3.txt
└── subdir2/

このディレクトリをdelコマンドで削除すると、次のようにsample_dir2のディレクトリ直下のファイルだけが削除される。

sample_dir2直下のファイルだけが削除されている

sample_dir2直下のファイルだけが削除されている

sample_dir2/
├── subdir1/
│   ├── sample1.txt
│   ├── sample2.txt
│   └── sample3.txt
└── subdir2/

今度はdelコマンドに/sパラメータを指定してディレクトリの削除を実施してみる。今度はsample_dir2直下のファイルだけではなく、sample_dir2\subdir1\直下のファイルも削除されていることがわかる。また、対象のディレクトリごとに削除の可否をユーザに問うとともに、削除したファイルの一覧も表示されている。

サブディレクトリのファイルも含めて削除されている

サブディレクトリのファイルも含めて削除されている

sample_dir2/
├── subdir1/
└── subdir2/

del /sはrm -rに相当する処理ということになるが、rm -rではディレクトリもサブディレクトリも全部削除するのに対して、del /sではファイルのみを削除してディレクトリはそのまま残るという違いがある。このあたりはLinuxを使ってきたユーザは違和感を覚えるかもしれない。

参考資料