有馬総一郎のブログ

(彼氏の事情)

邪魔な画像ファイルをカラドボルグでハッ!

foobar2000を使うようになって、音楽フォルダに入る画像はfolder.jpgだけで十分になった。でも、WMP11で保存されるfolder.jpgは隠しファイル&システムファイルなんで、AlbumArtDownloaderで保存しようとすると跳ねられるのでウザイ。

有馬総一郎のブログ

いちいち隠しファイル&システムファイルを表示させて削除するのもメンドイ。なんか方法を考えていたが・・・ 納入助というソフトでシステムファイル、隠しファイルの解除をフォルダごと一気に行える。もともとは更新日付、プロパティ情報を編集するためのソフトだが、そんな使い方も可能。

有馬総一郎のブログ

一気にシステムファイル、隠しファイルが白日のもとに晒されることとなった。

ちなみにコマンドプロンプトで行う場合は

ATTRIB -S -H Album\*.jpg

ATTRIBで属性参照、変更が可能。
オプション無しで属性参照。 Aはアーカイブ、 Sはシステムファイル、 Hは隠しファイル、 Rは読み取り専用。その属性を付与する場合は+A、+S、+H、+R、その属性を解除する場合は-A、-S、-H、-R/sでサブディレクトリも対象。/dでフォルダの属性も変更。

有馬総一郎のブログ

隠しファイル&システムファイルは同時に変更しないと解除されないので同時に-S -Hと指定する必要がある。まあ、このコマンドを使えば納入助のお世話にならなくても済んだのかも知れないけど、もう実施後だったからな。

で、私は代わりにfolder.jpgだけ残したいので、他の

  • AlbumArt_{E48B8DCA-8EAC-43D2-9C6F-D0C82F2A17C6}_Large.jpg
  • AlbumArt_{E48B8DCA-8EAC-43D2-9C6F-D0C82F2A17C6}_Small.jpg
  • AlbumArtSmall.jpg

がいらないから

CD /D "D:\MyDocument\My Music"
FOR /F "delims=" %%i IN ("DIR /B /S Album\*.jpg") DO (
    DEL "%%i"
)

なバッチファイル使って、実行削除。delコマンドはゴミ箱に行かずに直接削除されるコマンドなので恐ろしいコマンド。だから、決して他人には勧めないが、どうやら私は上手く行った。初めはecho/p、もしくは>などでテキストファイルに出力してから実行させるのが○。

CD /D "D:\MyDocument\My Music"
FOR /F "delims=" %%I IN ('DIR /A:SH /B /S folder.jpg') DO (
    ATTRIB -S -H "%%I"
)
FOR /F "DELIMS=" %%I IN ('DIR /B /S Album\*.jpg') DO (
    DEL /a:sh "%%I"
)

でうまく行くかと…

いやそれにしてもコマンドプロンプトって難しいね。Linuxのコマンドの方がfindもあるし、変数の連結とか簡単だし便利だなーと思ってしまった。

一応一夜漬けな解説をすると

バッチファイル内

FOR %%変数 IN (セット) DO コマンド [コマンドパラメータ]

ややこうしいのはコマンドラインだと

FOR %変数 IN (セット) DO コマンド [コマンドパラメータ]

変数の%が減ること

セットに("\*.txt")(1 2 3)('DIR /B /S \*.jpg')など複数のファイルを取得できるようなファイルセット、複数文字列、コマンドを書く。

dir /b /s \*.jpg

はカレントディレクトリ配下のファイル/ディレクトリ名をサブディレクトリも含め取得する。 /Bをつけないと作成日時(2007/11/10 20:23)、 ディレクトリかどうか(<DIR>)、余計な情報も取得してしまう。

DIR
2007/11/10 20:23 <DIR> 椎名純平
DIR /B
椎名純平

/AはATTRIBのオプションのように

  • /A:S システムファイルだけ対象
  • /A:H 隠しファイルだけ対象

として検索出来る。

FOR /F "delims=[区切り文字]"

は(セット)で取得した情報をどう区切っていくか(どうFOR文でまわすか)を決定する。 "delims=[区切り文字]"がない場合は、スペース、タブで区切られてしまうので

D:\MyDocument\My Music\タイナカサチ

D:\MyDocument\My

で区切られる。そうなると当然正常に対象ファイル、ディレクトリを探せないので、"DELIMS="区切り文字を何も指定しないことで改行毎に区切られるようになる。

DELDIRのように/A:で対象ファイル/ディレクトリを絞れる。なんにせよ、DEL(REM)コマンドでの事故は絶えないので気をつけて。

ところで凛、一つ確認して良いかな・・・、画像ファイルの隠し・システムファイル属性を解除するのは良いが、別に・・・削除してしまっても構わんのだろ。DELの確認は/Pだ。

Comments