• 締切済み

「内容を圧縮してディスク領域を節約する」検索方法2

(どうも不可能らしいですが念のため再質問しました) 「内容を圧縮してディスク領域を節約する」がONになったファイルを検索してリストアップすることが可能なら方法を教えて下さい。 --- ファイルやフォルダのプロパティ → 全般タブ → 詳細設定 → 圧縮属性または暗号化属性 → 「内容を圧縮してディスク領域を節約する」

みんなの回答

  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.5

No4の補足です。 ListView to CSVでの出力形式をタブ区切りにしてやれば、エクセルで普通に項目ごとに別の列で読み込まれますので、No4で書いたエクセルでの区切り位置の設定をしなくてすみます。

  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.4

> dirやattribコマンドはC属性には対応しておらず、コマンドラインでは無理ではないでしょうか? はい、No3でも書きましたが無理でした。 で、いいソフトを見つけたのでこれを利用してください。 ListView to CSV http://www.inasoft.org/webhelp/lv2csv/HLP000001.html ダウンロードはこちらから http://www.inasoft.org/lv2csv.html#download ファイル一覧をクリックしたときの画面 http://www.inasoft.org/webhelp/lv2csv/HLP000013.html これで出力したファイルをエクセルで読み込むとA列に全て読み込まれるので、データの区切り位置の設定でカンマやタブ云々を選択→次へ→区切り文字のその他をチェックしてボックスに " を指定、カンマもチェックすると、ファイル名や属性などがそれぞれの列に分かれます。 それでデータの一番上に一行目を挿入してそれぞれの列に適当な文字を入力し、オートフィルタを設定します。属性の列のフィルタのオプション設定でCを含む条件でフィルタを掛けるとC属性のファイル一覧が出来上がります。 試してみてください。

pf_
質問者

お礼

大変にありがとうございます。 早速試してみます。 感謝いたします。

  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.3

No1です。補足です。 > DOSコマンドのDIRのオプションだと /A-ですが/A-A オプションだと AC属性のものもはねられてしまって一覧取得できませんでした A属性を含む属性以外という考え方だったんですね。私はA属性のもののみはねるものと思ってました。ということで、これは使えそうにありません。 > エクセルのVBAですが とりあえず以下のVBAでエクセルのシートにC属性のファイルを書き出せる感じですが、このVBAを含むエクセルファイルが保存されているフォルダを含み、それ以下のフォルダの全てのファイルの属性を調べるので、ファイル数が多いと正直とても時間がかかります。実行させるのはSub Test()です。 ただし、エクセル2003だと行が65536行までしかないためにC属性のファイルが65536個を超えるとエラーになります。そんなにC属性のファイルはないと思いますので、そのあたりの処理は割愛してます。また、先の回答にも書きましたが、C属性はVBAの仕様に含まれていないみたいなので、私の簡単なテストでは取得できましたが、実際のファイル群できちんともれなく取得できるかどうかは不明です。 下記のコードで1個も取得できなかった場合 MyFileName = Dir(MyPath & "\*.*", vbHidden) のところを MyFileName = Dir(MyPath & "\*.*") にしてみてください。その場合、隠しファイルは検索外になってしまいます。 Sub Test() Dim MyRow As Long MyRow = 0 Range("A:A").ClearContents Call Sample(ThisWorkbook.Path, MyRow) End Sub Sub Sample(ByVal MyPath As String, ByRef MyRow As Long) Dim MyFileName As String, c As Object Dim MyAttr As Integer MyFileName = Dir(MyPath & "\*.*", vbHidden) Do While MyFileName <> "" MyAttr = GetAttr(MyPath & "\" & MyFileName) If (MyAttr And 10240) <> 0 And MyAttr >= 10240 Or (MyAttr >= 2000 And MyAttr <= 2200) Then MyRow = MyRow + 1 Cells(MyRow, 1) = MyPath & "\" & MyFileName End If MyFileName = Dir() Loop With CreateObject("Scripting.FileSystemObject") For Each c In .GetFolder(MyPath).SubFolders Call Sample(c.MyPath, MyRow) Next c End With End Sub

回答No.2

#1さんにの最後のやつに賛成 検索フィルターに掛からないならcmdでリスト化してテキストエディタで検索かけるのが無難。 ファイル名:\> Dir>list.txt http://www.atmarkit.co.jp/ait/articles/0412/04/news014.html ただ階層ごとに作るのが面倒ではあるけれど、圧縮する位なら更新頻度は少ないんですよね? 多いならHDD買い換えて検索フィルター使うのが一番早い。

pf_
質問者

お礼

お礼が遅れてすみません。 DirやAttribコマンドはC属性には対応していないのではないでしょうか?

  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.1

「内容を圧縮してディスク領域を節約する」にすると、ウィンドウズエキスプローラーで詳細表示で属性を表示させてみるとCがつきますね。 DOSコマンドのDIRのオプションだと 属性 D ディレクトリ R 読み取り専用 H 隠しファイル A アーカイブ S システム ファイル - その属性以外 ですので、 /A- で一覧をとるとなにかとれそうな感じもしますが、「内容を圧縮してディスク領域を節約する」 一覧になるかどうかは不明ですね…。 エクセルのVBAですが GetAttr関数で調べるとアーカイブと併用されている場合、2080が返ってきますので、それでリストアップできそうな感じでもあります。単独の場合10240が返ってきます。 ただ、GetAttr関数の本来の戻り値はヘルプによると vbNormal 0 通常ファイル vbReadOnly 1 読み取り専用ファイル vbHidden 2 隠しファイル vbSystem 4 システム ファイル。Macintosh では使用できません。 vbDirectory 16 フォルダ vbArchive 32 アーカイブ (属性最後にバックアップした後で、変更されたファイル)。Macintosh では使用できません。 ですので、10240や2080が正常な戻り値かどうかは不明なので、使えるかどうかはテストしてみないと分からない部分です。 あと、一時フォルダを作成してC属性のついたファイルだけコピーしてDOSコマンドで一時フォルダに対して DIR > C.TXT とかしたら一覧は取れますね。

pf_
質問者

お礼

お礼が遅くなってすみません。 エクスプローラーの詳細表示でC属性が表示されることは初めて知りました。 ありがとうございます。 VBAは私にはちょっと難しすぎて使えないです。 すみません。 dirやattribコマンドはC属性には対応しておらず、コマンドラインでは無理ではないでしょうか? --- エクスプローラーでCドライブ全体を*で検索して十数万個のファイルを詳細表示した状態で、属性を表示させてソートしてみました。 C属性が付いたものだけを抽出とかできれば良かったのですが、ソートさせても他の属性との組み合わせであちこちに分散されて表示されてしまいます。

関連するQ&A