電子書籍の厳選無料作品が豊富!

(どうも不可能らしいですが念のため再質問しました)

「内容を圧縮してディスク領域を節約する」がONになったファイルを検索してリストアップすることが可能なら方法を教えて下さい。

---
ファイルやフォルダのプロパティ → 全般タブ → 詳細設定 → 圧縮属性または暗号化属性 →
「内容を圧縮してディスク領域を節約する」

「「内容を圧縮してディスク領域を節約する」」の質問画像

A 回答 (5件)

No4の補足です。



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

> dirやattribコマンドはC属性には対応しておらず、コマンドラインでは無理ではないでしょうか?



はい、No3でも書きましたが無理でした。

で、いいソフトを見つけたのでこれを利用してください。

ListView to CSV
http://www.inasoft.org/webhelp/lv2csv/HLP000001. …
ダウンロードはこちらから
http://www.inasoft.org/lv2csv.html#download

ファイル一覧をクリックしたときの画面
http://www.inasoft.org/webhelp/lv2csv/HLP000013. …

これで出力したファイルをエクセルで読み込むとA列に全て読み込まれるので、データの区切り位置の設定でカンマやタブ云々を選択→次へ→区切り文字のその他をチェックしてボックスに " を指定、カンマもチェックすると、ファイル名や属性などがそれぞれの列に分かれます。

それでデータの一番上に一行目を挿入してそれぞれの列に適当な文字を入力し、オートフィルタを設定します。属性の列のフィルタのオプション設定でCを含む条件でフィルタを掛けるとC属性のファイル一覧が出来上がります。

試してみてください。
    • good
    • 0
この回答へのお礼

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

お礼日時:2013/12/02 13:43

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
    • good
    • 0

#1さんにの最後のやつに賛成


検索フィルターに掛からないならcmdでリスト化してテキストエディタで検索かけるのが無難。

ファイル名:\> Dir>list.txt
http://www.atmarkit.co.jp/ait/articles/0412/04/n …
ただ階層ごとに作るのが面倒ではあるけれど、圧縮する位なら更新頻度は少ないんですよね?
多いならHDD買い換えて検索フィルター使うのが一番早い。
    • good
    • 0
この回答へのお礼

お礼が遅れてすみません。

DirやAttribコマンドはC属性には対応していないのではないでしょうか?

お礼日時:2013/12/01 20:49

「内容を圧縮してディスク領域を節約する」にすると、ウィンドウズエキスプローラーで詳細表示で属性を表示させてみると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

とかしたら一覧は取れますね。
    • good
    • 0
この回答へのお礼

お礼が遅くなってすみません。

エクスプローラーの詳細表示でC属性が表示されることは初めて知りました。
ありがとうございます。

VBAは私にはちょっと難しすぎて使えないです。
すみません。

dirやattribコマンドはC属性には対応しておらず、コマンドラインでは無理ではないでしょうか?

---
エクスプローラーでCドライブ全体を*で検索して十数万個のファイルを詳細表示した状態で、属性を表示させてソートしてみました。

C属性が付いたものだけを抽出とかできれば良かったのですが、ソートさせても他の属性との組み合わせであちこちに分散されて表示されてしまいます。

お礼日時:2013/12/01 20:47

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!