• ベストアンサー

ツールを探しています。指定フォルダ配下のサイズ・ファイル数

BLUEPIXYの回答

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.4

#3>集計結果は、一度に、 なるほど、勘違いしていましたすみません。 以下修正してみました。 ---------------------------------------------------------------- '指定したフォルダのサブフォルダを含めたファイル件数とサイズを表示する 'cscript //nologo GetFsize.vbs FOLDER Dim fso, wsho, folderList, folder Dim i, count Set fso = WScript.CreateObject("Scripting.FileSystemObject") Set wsho = WScript.CreateObject("WScript.Shell") Set folderList =WScript.Arguments count=0 for i=0 to folderList.length-1 Set folder = fso.GetFolder(folderList(i)) count = count + auxProc(folder.Path) next WScript.Echo(folder.Path & " " & count & " files " & folder.Size & "Bytes") function auxProc(folderPath) Dim folder, x, folderName, count Set folder = fso.GetFolder(folderPath) count = folder.Files.Count For Each x in folder.SubFolders 'サブフォルダの処理 count = count + auxProc(x.Path) next auxProc = count End function ---------------------------------------------------------------- >auxProc(folder.Path)の戻り値等で、ファイル数、サイズ(の2つ)を返して… フォルダのサイズ自体は、ルートだけでいいので、(ルートのサイズはサブフォルダを含んだサイズなので)、ファイル数を返せば良いです。 >処理速度的に、VBScriptを使っても、(VC等で作成することに比べ)遅いということは無いでしょうか。 例え、VCを使ったとしても、こうしたディスクアクセスがほとんどの処理は大して変わらないと思います。 内容的にも大したことはやっていないので、API呼び出しが動作のほとんどを占めると思いますが、それがAPIの直接呼び出しか間接呼び出しかくらいの違いだと思うので、ディスクアクセスに比べれば大した違いにはならないと思います。

supob
質問者

お礼

お礼が遅くなりました。 先ほど、動作確認をしました。 D:\test 68837 files 5051663083Bytes を数十秒で回答してきました。 また、GUIにて該当フォルダを右クリックしてプロパティで求めた結果と比較して、 ファイル数、サイズともに一致することが確認できました。 処理速度的にもほとんど変わりませんでした。 (キャッシュされていたのか、後から実行した方が体感的に速かったですが、 あらためて上記VBSを走らせたら、更に速く数秒で答えを返してきましたので、問題なしと思っています) やりたかったことがこんなに簡単にできて、大変うれしいです。 私のほうでも、#3でのご回答との違いなどをこれから勉強したいと思います。 以上、懇切に何度もありがとうございました。

supob
質問者

補足

引数で複数フォルダが指定できるようなことも考慮されているようだ、と気がつきましたので、部分的にちょっと変えてみました。 'cscript //nologo GetFsize.vbs FOLDER1 [FOLDER2]... Dim fso, wsho, folderList, folder Dim i, count, file, size     : file = 0 size = 0 for i=0 to folderList.length-1 count=0 Set folder = fso.GetFolder(folderList(i)) count = count + auxProc(folder.Path) WScript.Echo(folder.Path & " " & count & " files " & folder.Size & " Bytes") file = file + count size = size + folder.Size next WScript.Echo("Total " & file & " files " & size & " Bytes")     : そうすると、こんな感じにできました。 D:\>cscript //nologo GetFsize.vbs D:\test D:\Becky D:\test 68836 files 5051662329 Bytes D:\Becky 9899 files 2194430933 Bytes Total 78735 files 7246093262 Bytes

関連するQ&A

  • フォルダ配下にあるファイル名を取得する方法

    度々すいません。 また別件で困ってしまい質問をあげさせて頂きます。 環境は以下の通りになります。  ・WindowsXP  ・VC++.NET(2002版) フォルダ配下に存在するファイルのファイル名を取得したいのですが なにか良い関数・やり方はあるのでしょうか? お手数ですがご教授願います。 宜しくお願い致します。

  • フォルダ指定できるCUI版の高速バイナリ比較ツール

    Bn_Cmp 2.50というバイナリ比較ツールを使っていますが、 このツールはGUI版ですが、このツールと同程度高速な、 フォルダ指定して複数ファイルを比較できる フリーのCUI版のバイナリ比較ツールを探しています。 コマンドプロンプトからバッチファイルで、 バイナリ比較ツールを実行して、 その結果もバッチファイルで使いたいのですが、 指定したフォルダの配下にある複数のファイルを 高速にバイナリ比較できるCUI版のツールはないでしょうか。 (OS:Windows7) 追記: Bn_Cmp 2.50には、 http://www.geocities.jp/hitoshi_pg/Bn_Cmp/index.html に(コンソール版は2重起動できません) と書かれていましたが、 Bn_Cmp 2.50にコンソール版があるのでしょうか? あれば、このコンソール版を試したいです。 Bn_Cmp 2.50には、Bn_Cmp.exeの実行ファイルのほかに、 Bn_Cmp_CMD.exeというファイルも同梱されていますが、 Bn_Cmp_CMD.exeの起動の仕方(引数などの情報)が ありませんので結局よく分かりませんでした。

  • フォルダ間バイナリファイル比較ツール無いですか?

    ■質問 2つのフォルダ配下に格納されたバイナリファイルが同じであるか比較するツールを探しています。 ところが、テキスト比較はあるのですが、シンブルに以下の機能のが見つかりません。  ・ファイル数は、「同じか否か」だけ判れば結構です。  ・ファイル内容は、「同じか否か」だけ判れば結構です。 ■目的 2つのフォルダ配下に格納された数千枚のJPEG画像ファイルが、ファイル数、内容共に同じであるかを知りたいのです。 ■理由 自分は、撮影したJPEG画像ファイルを月毎にフォルダ管理して保存しています。 レイドを使用せず、「手動ミラーリング」で同じ別のHDDにコピーして保存しています。 ところが、両方ともHDDがアロケーションエラーになり自動修復はしたものの、欠損したファイルが あるそうなのです。そこで比較して違った画像ファイルの「生きている」方を生かしたいのです。 宜しくお願いします。

  • 同じディレクトリ内の複数のファイル名、フォルダ名を、まとめてクリップボードへ送る、又はテキストで編集

    保存されているかなりの数のファイル、フォルダ郡をテキスト形式で編集する事になりました。 タイトルの通り、同ディレクトリに保存されている複数のファイル名、フォルダ名をまとめてテキスト形式でクリップボードへコピーするツールを探しています。 結果テキスト形式、又は簡単にテキストに出来る形式での編集が可能になる場合必ずしも上記の条件を満たしたツールでなくとも構いません。 又、編集を支援出来そうな機能を持ったツール、似たような機能を持ったツールでも歓迎です。 心当たりある方は回答いただけると幸いです、よろしくお願い致します。

  • シンボリックリンク作成のバッチファイル

    親フォルダーに、aフォルダーとbフォルダーが入っています。 aフォルダー配下には、xフォルダーがあり、その中には複数のテキストファイルが入っています。 parent\a\x\test.txt parent\b\ 以下の様なバッチファイルを「送る」に登録しました。 @echo off rem 選択ディレクトリ配下のxディレクトリに移動 cd /D %1\x\ rem カレントディレクトリにあるすべてのファイルを、bディレクトリにコピー for %%i in (*.*) do ( copy "%%i" "..\..\b\" ) これにより、aフォルダーを選択してバッチファイルを実行すると、xフォルダー配下のテキストファイルがbフォルダーの中にコピーされることは確認しました。 ここで、コピーではなく、シンボリックリンク(mklink)を作成したいのですが、引数をどのように設定すればよいでしょうか。いろいろ試しましたがうまくいきませんでした。 ご教示よろしくお願いします。

  • スタイルシートの<link>表記について

    色々なことを試しても解決できないので質問させてください。 現在のディレクトリ構成は、 HPフォルダ-index.html      |      -report.html (www.○○○.com/report.html)      |      -report1.html (www.○○○.com/report1.html)      |      -report2.html (www.○○○.com/report2.html)      |      -css-text.css         |        -base.css といったように1つのフォルダに全てのHTMLファイルが入っているのですが、 「HPフォルダ」の中に「report」というフォルダを作って、 HPフォルダ-index.html      |      -report.html (www.○○○.com/report.html)      |      -report-report1.html (www.○○○.com/report/report1.html)          |          -report2.html (www.○○○.com/report/report2.html)      |      -css-text.css         |        -base.css といったように「report」フォルダの中に「report1.html」や「report2.html」などを入れると、 孫ページへのスタイルシートの効果が消えてしまいます。 そこで孫ページ<HEAD>内の <link rel="stylesheet" type="text/css" href="css/base.css" /> を <link rel="stylesheet" type="text/css" href="../css/base.css" /> に変更するといいと言われたことがあるのですが、効果が適用されません。 どういった<link>表記にすれば孫ページにスタイルシートの効果が適用されるのでしょうか? 説明が下手ですみません。 よろしくお願いいたします。

    • ベストアンサー
    • CSS
  • シンボリックリンクが開けない

    親フォルダーに、aフォルダーとbフォルダーが入っています。 aフォルダー配下には、xフォルダーがあり、その中には複数のテキストファイルが入っています。 parent\a\x\test.txt parent\b\ 以下の様なバッチファイルを「送る」に登録しました。 @echo off cd /D %~1\x\ for %%i in (*.*) do ( mklink "..\..\b\%%~nxi" "%%i" ) これにより、aフォルダーを選択して「送る」からバッチファイルを実行すると、bフォルダー配下に、xフォルダー配下のすべてのファイルのシンボリックファイルが貼られました。(シンボリックファイルは作成されました。) しかし、シンボリックファイルを開こうとしても、以下のようなエラーメッセージが表示されて、開けません。 エラーコード 1921 ファイル名を解決できません。 どこを修正すればよいでしょうか。ご教示よろしくお願いします。

  • こんなツールってありませんか?

    OSはWinXPです。フォルダを選択するだけで選択フォルダ配下の ファイル(選択フォルダ配下のフォルダ内ファイルも含む)が全て 任意のアプリケーションで開くというツールってないでしょうか? htmlやphpやcssなど主にテキストファイルに使用する事が目的で 任意のアプリケーションとはテキストエディターにあたります。 それぞれフォルダ毎に管理しておりファイルを全て選択しテキスト エディターにドラッグアンドドロップすれば一気に開く事は可能 なのですがフォルダが多数存在しフォルダを移動してその作業を 繰り返す事が手間に感じてしまいます。 できればフリーで使用できるものが希望です。ご存知の方が いらっしゃいましたら宜しくお願い致します。

  • テキスト内の、該当する頭文字と末尾の単語を検索する

    テキストファイルから、特定の頭文字と末尾で構成されている単語を検索し、リスト化するバッチを作成したいのですが、どのようにしたらよろしいのでしょうか。 たとえば  ---------------------  全体図は「map_01.jpg」に記載されています。  詳細は「map_sapporo.jpg」「map_tokyo_ikebukuro01.jpg」をご参照ください。  --------------------- などと書かれたテキストデータに対し、  --------------------- 頭文字:map 末 尾:jpg  --------------------- 等と指定しバッチを実行すると、テキスト内から該当する検索し、箇条書きのリストとして出力するものであってほしいのです。 検索するテキストは、バッチの同一フォルダ内にあるもの(指定する形式でも可) リストは、バッチと同一フォルダ内にlist.txtなどで出力したいです。 出力形式は、  ---------------------  map_01.jpg  map_sapporo.jpg  map_tokyo_ikebukuro01.jpg  --------------------- といった感じが望ましいです。 自分でも試み、頭文字・末尾のみの検索方法はわかったのですが、両方での方法を見つけることができませんでした。 どなたかわかる方がいらっしゃいましたら、教えて頂けませんでしょうか。 何卒よろしくお願いいたします。

  • C++を始めたばかりでVC++2008の扱い方がよくわかりません。

    C++を始めたばかりでVC++2008の扱い方がよくわかりません。 はじめまして。今までC言語をひたすらやってきたものですが、 そろそろ就職のためにC++を始めようと考えています。 そして、VC++2008EXPRESSをインストールすることに成功しました。 みなさんよくこのソフトが使いやすいとおっしゃるのですが、 使い方を具体的に書いてあるサイトや本などご存知でしょうか? たとえば、ソースファイルフォルダにtextを追加する方法とか、 ソースファイルのオブジェクト志向的な書き方などです。 やはり最初は、コンソールアプリから始めようとしていますが、 VCで始めたほうが効率がよいでしょうか? どうしてもこの統合開発環境を使いこなしたいと考えております。 可能な範囲で構いませんので、アドバイスいただけたら幸いです。