cmdで空フォルダの一括削除

2011/01/19

参考にされる方は自己責任でお願いします。

空フォルダを削除したいんだけどいちいちチェックするのが面倒だし、一個ずつってのも面倒。
ということで、コマンドプロンプトを使うことに。
※windows付属の「CMD」。
※CMDの起動は「スタート」メニューの「ファイル名を指定して実行」で「CMD」を入力して「OK」ボタン。

使うコマンドはディレクトリ(フォルダ)の移動の「cd」とディレクトリ(フォルダ)の削除の「rd」。
もちろん一回ずつコマンドを打つなんて面倒なんでテキストエディタなり他のツールも利用。

ディレクトリ(フォルダ)の削除の「rd」は「中身があったら削除しない」「ファイルだったら削除しない」と勝手に判断してくれる。

ファイル一覧の作成

ファイル・フォルダの構成を書き出すにはフリーソフトを使うなり好きな方法で。
※私が使っているソフトは「LS – ファイル一覧の出力」。Googleで「LS – ファイル一覧の出力」を検索してください。

出力して深い階層順に並び替える。

/aaa/
/aaa/bbb/
/aaa/ccc/

上記の場合、「/aaa/bbb/」や「/aaa/ccc/」が「/aaa/」の上にくるように並び替え。
下記のようになればOK。

/aaa/bbb/
/aaa/ccc/
/aaa/

バッチファイルの作成1

適当なテキストファイルを作って拡張子は「.bat」とする。これがバッチファイルになる。
中身はまず下記。

  1. @echo off
  2.  
  3. :end

次に対象フォルダへのパスを指定。

CMDにログインするとおそらくユーザー名までパス指定になってるはず。

ユーザー名が「recatnap」の場合、下記のようになってるはず。

C:\Documents and Settings\recatnap>

ココから対象までディレクトリ(フォルダ)を移動するんだけど、考えるのが面倒なんでデスクトップにする。
ただ、毎回指定するのも面倒なんで「削除」フォルダを作ってその中で作業することにする。
コマンドプロンプトで指定するのもいいけど予め変数(?)にしておく。
※「LS – ファイル一覧の出力」を利用しているなら不要。

  1. @echo off
  2.  
  3. rem 対象ディレクトリ
  4. set target_dir=デスクトップ\削除
  5.  
  6. cd “%target_dir%”
  7.  
  8. :end

上記は、「target_dir」っていう変数(?)に「デスクトップ\削除」を代入。
「”」とかでくくる必要はないっぽい。
フォルダの区切りは「/」ではなく「\」。
「/」でも問題ないけど、問題がある場合がある。ということで「\」

「rem」は、コメント文。

次に、「cd」でディレクトリ(フォルダ)の移動。

バッチファイルの作成2

ディレクトリ(フォルダ)の削除のコマンドを作成する。
矩形選択なり、置換えなりを使ってフォルダ構成の頭に「rd 」をつける。

aaa\bbb
↓↓↓
rd aaa\bbb

こんな感じ。
注意点は、上記の場合、相対パスなので「aaa」の前に「\」はいらない。
「\」をつける場合は絶対パスになるので下記のようにする。

aaa\bbb
↓↓↓
rd \Documents and Settings\recatnap\デスクトップ\削除\aaa\bbb

これらを先に作ったバッチファイルに追加する。

  1. @echo off
  2.  
  3. rem 対象ディレクトリ
  4. set target_dir=デスクトップ\削除
  5.  
  6. cd “%target_dir%”
  7.  
  8. rd aaa\bbb
  9. rd aaa\ccc
  10. rd aaa
  11.  
  12. :end

もし、絶対パスでいく場合は下記のような感じで「cd」とか不要になる。

  1. @echo off
  2.  
  3. rd \Documents and Settings\recatnap\デスクトップ\削除\aaa\bbb
  4. rd \Documents and Settings\recatnap\デスクトップ\削除\aaa\ccc
  5. rd \Documents and Settings\recatnap\デスクトップ\削除\aaa
  6.  
  7. :end

これでOKと思いきや、実際はダメっぽい。「ディレクトリ名が無効です。」とでてくる。
やっぱり…「cd」はあったほうがよさげ。

バッチファイルの実行

保存後、そのファイルをダブルクリック。

cmdで空フォルダの一括削除2

新着(ニュース関連以外)

2018-07-26
年賀状で「新春」とか書くけど・・・何故なんだろうと8月を目前にした今、疑問に思った。
2018-05-16
PHPで画像のヘッダ情報(?)の「Orientation」を元に画像回転させたい。
2018-03-05
Android Studioをインストール。エミュレータを軽くするトコまで終わらせたかったけど、挫折した。
2018-02-23
プッシュ通知について調べてた時にでてきたServiceWorker。そのServiceWorkerについてのメモ。
2017-12-13
jqueryで取得したDOM要素をオブジェクトじゃなくて、配列で受け取りたい