- ベストアンサー
バッチファイルでディレクトリの使用容量を取得する方法
- バッチファイル初心者の方へ。SドライブのA~Eフォルダーの使用容量を一括で取得する方法をご紹介します。
- SドライブのA~Eフォルダーの使用容量をバッチファイルを使って簡単に取得する方法を解説します。詳細は記事でご確認ください。
- バッチファイルを使用してSドライブのA~Eフォルダーの使用容量を一括で取得する方法を解説します。手順は簡単なので初心者の方でも簡単に実行できます。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
No.3です。 使用しているOSが XP Pro ということでデスクトップにsizelist.txtというファイルを 出力するよう修正してみましたのでご確認ください。 :-------------------------------------------------- echo off set fname="%USERPROFILE%\デスクトップ\sizelist.txt" if exist %fname% del %fname% pushd s:\ for /D %%d in (*) do call :sub "%%d" exit /b :sub for /F "tokens=3 delims= " %%a in ('dir /s %1 ^| find "個のファイル"') do set size=%%a echo %1,"%size%">>%fname% goto :EOF :--------------------------------------------------
その他の回答 (5)
- papapa0427
- ベストアンサー率25% (371/1472)
#4さんで正解だと思いますよ。 echo %1,"%size%">>sizelist.txtの部分は毎回追加書き出しになりますので、毎日更新するのなら echo %1,"%size%" >sizelist.txtの方が良いかもしれません。 このファイルを読み込んでExcelないしAccessでデータベース化すればよいでしょう。 ちなみにどちらもマクロを仕込んだExcelやAccessをバッチ上からキックできますよ。 >また、使用量と思われる値が返ってきていますが、バイト単位だと思いますが、 >実際、フォルダーのプロパティで確認した数字と全然違うものになります。 そりゃあそうです。ここで取得しているのは純粋にファイルのサイズですね。(バイト単位です。) フォルダで確認するのはHDDの占有量です。 たとえば、2K単位でHDDのセクターが管理されている場合、1Bytから2048Bytまでは、HDD上では2Kbyt消費されることになるからです。
お礼
どうもありがとうございました。
- pita-gora
- ベストアンサー率70% (102/145)
No.3です。 ざっと作ったので、以下の場合の想定が漏れていました。すみません。 1)フォルダ名称に空白が入ることがある 2)フォルダ内にサブフォルダがある場合の総数を集計していない その点を修正してみました。 :------------------------------------------------------- echo off pushd s:\ for /D %%d in (*) do call :sub "%%d" exit /b :sub for /F "tokens=3 delims= " %%a in ('dir /s %1 ^| find "個のファイル"') do set size=%%a echo %1,"%size%" goto :EOF :------------------------------------------------------- >2.この結果をテキストファイルにして、デスクトップに作成させる事は >できますでしょうか。 デスクトップはOSによってフォルダの場所(の記述)が異なりますので、 使用するOSの情報がないとお答えできません。 S:\にファイルを出力する場合でしたら、 最後から2行目の echo %1,"%size%" ↓ echo %1,"%size%">>sizelist.txt と記述すれば、S:\sizelist.txt というファイルが出力可能です。 ※dirコマンドの出力結果を利用しているため、サブフォルダの階層が深い場合は時間がかかります。
お礼
ご回答ありがとうございます。 教えていただいたもので、取得出来たようです。 テキストファイルに落としたいのですが、使用しているPCのOSは、 WindowsXP pro SP3 になります。 echo %1,"%size%">>sizelist.txt でやっところ、『アクセスが拒否されました』と表示され、一つも取得出来ませんでした。 引き続きよろしくお願いします。
- pita-gora
- ベストアンサー率70% (102/145)
Windows XP以降のOSとして回答します。 以下にサンプルをざっと書いてみました。dirコマンドの出力からフォルダのサイズを取得しています。 echo off pushd s:\ for /D %%d in (*) do for /F "tokens=3 delims= " %%a in ('dir %%d ^| find "個のファイル"') do echo %%d -- %%a
お礼
ご回答ありがとうございます。 試してみたのですが、いくつか質問させてください。 1.バッチファイルを実行した結果が下記になります。 Afolder -- 0 Bfolder -- 242,874 Cfolder -- 4,166,368 Dfolder -- 7,958,143 ファイルが見つかりません Efolder -- 6,393,645 ・ ・ ・ ・ 複数あるフォルダーのうちのいくつかは「ファイルが見つかりません」と表示されてしまいます。 なぜでしょうか? また、使用量と思われる値が返ってきていますが、バイト単位だと思いますが、 実際、フォルダーのプロパティで確認した数字と全然違うものになります。 2.この結果をテキストファイルにして、デスクトップに作成させる事はできますでしょうか。 お手数をおかけいたしますが、よろしくお願いします。
- pakuti
- ベストアンサー率50% (317/631)
お礼
ご回答ありがとうございます。 ここで質問する前に、ご紹介いただいたHPを見て試したのですが、 デスクトップに『diruse』という拡張子の無いファイルが出力され、Notepadで開いて中を確認したのですが、 何の記載もありませんでした。
- g_liar
- ベストアンサー率52% (382/728)
直接の回答ではありませんが…。 「Folder Size」というエクスプローラの機能拡張をするフリーソフトがあります。 インストールして設定すると、Sドライブだけフォルダ内のファイルサイズの合計を表す「Folder Size」列を表示できます。 http://www.forest.impress.co.jp/lib/sys/wincust/explrextn/foldersize.html
お礼
ご回答ありがとうございます。 アプリケーションがあるんですね。 今回、私どもで考えているのは、エクセルファイルにデータを落とし、 時系列で増減を確認したいと思っております。 情報、参考にさせていただきます。 ありがとうございました。
お礼
返事が遅くなりすみません。 おかげさまで出来ました。 どうもありがとうございました。