プロが教えるわが家の防犯対策術!

バッチファイルでディレクトリの使用容量を取得したい

バッチファイル初心者です。

下記の様に、Sドライブの配下に、Afolder~Efolderまで、複数フォルダーがあります。

S:\Afolder
S:\Bfolder
S:\Cfolder
S:\Dfolder
S:\Efolder

A~Eまで、それぞれフォルダーの使用容量を日々チェックをしたいのですが、
フォルダーのプロパティから確認すると、複数フォルダーがあるので、結構面倒です。
バッチファイルで、複数フォルダーの使用容量を一括で取得出来たら便利だと思いますが、
バッチフォルダーはほとんど分かりません。

どなたか、分かる方教えてください。
よろしくお願いします。

A 回答 (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

:--------------------------------------------------
    • good
    • 2
この回答へのお礼

返事が遅くなりすみません。
おかげさまで出来ました。

どうもありがとうございました。

お礼日時:2010/09/03 14:48

#4さんで正解だと思いますよ。



echo %1,"%size%">>sizelist.txtの部分は毎回追加書き出しになりますので、毎日更新するのなら
echo %1,"%size%" >sizelist.txtの方が良いかもしれません。
このファイルを読み込んでExcelないしAccessでデータベース化すればよいでしょう。
ちなみにどちらもマクロを仕込んだExcelやAccessをバッチ上からキックできますよ。

>また、使用量と思われる値が返ってきていますが、バイト単位だと思いますが、
>実際、フォルダーのプロパティで確認した数字と全然違うものになります。
そりゃあそうです。ここで取得しているのは純粋にファイルのサイズですね。(バイト単位です。)
フォルダで確認するのはHDDの占有量です。
たとえば、2K単位でHDDのセクターが管理されている場合、1Bytから2048Bytまでは、HDD上では2Kbyt消費されることになるからです。
    • good
    • 1
この回答へのお礼

どうもありがとうございました。

お礼日時:2010/09/03 14:44

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コマンドの出力結果を利用しているため、サブフォルダの階層が深い場合は時間がかかります。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

教えていただいたもので、取得出来たようです。

テキストファイルに落としたいのですが、使用しているPCのOSは、
WindowsXP pro SP3 になります。

echo %1,"%size%">>sizelist.txt でやっところ、『アクセスが拒否されました』と表示され、一つも取得出来ませんでした。


引き続きよろしくお願いします。

お礼日時:2010/08/19 11:06

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
    • good
    • 2
この回答へのお礼

ご回答ありがとうございます。
試してみたのですが、いくつか質問させてください。

1.バッチファイルを実行した結果が下記になります。

Afolder -- 0
Bfolder -- 242,874
Cfolder -- 4,166,368
Dfolder -- 7,958,143
ファイルが見つかりません
Efolder -- 6,393,645





複数あるフォルダーのうちのいくつかは「ファイルが見つかりません」と表示されてしまいます。
なぜでしょうか?
また、使用量と思われる値が返ってきていますが、バイト単位だと思いますが、
実際、フォルダーのプロパティで確認した数字と全然違うものになります。


2.この結果をテキストファイルにして、デスクトップに作成させる事はできますでしょうか。

お手数をおかけいたしますが、よろしくお願いします。

お礼日時:2010/08/18 11:11
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

ここで質問する前に、ご紹介いただいたHPを見て試したのですが、
デスクトップに『diruse』という拡張子の無いファイルが出力され、Notepadで開いて中を確認したのですが、
何の記載もありませんでした。

お礼日時:2010/08/18 11:17

直接の回答ではありませんが…。


「Folder Size」というエクスプローラの機能拡張をするフリーソフトがあります。
インストールして設定すると、Sドライブだけフォルダ内のファイルサイズの合計を表す「Folder Size」列を表示できます。

http://www.forest.impress.co.jp/lib/sys/wincust/ …
    • good
    • 1
この回答へのお礼

ご回答ありがとうございます。

アプリケーションがあるんですね。
今回、私どもで考えているのは、エクセルファイルにデータを落とし、
時系列で増減を確認したいと思っております。

情報、参考にさせていただきます。
ありがとうございました。

お礼日時:2010/08/18 13:48

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

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A