『ボヘミアン・ラプソディ』はなぜ人々を魅了したのか >>

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

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

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

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

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

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

このQ&Aに関連する最新のQ&A

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

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

お礼日時: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に関連する人気のQ&A

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

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QDirコマンドでフォルダ内ファイルの合計サイズをだすには?(コマンドプロンプトにて)

いろいろ調べましたが不明な点があり、質問します。

WindowsのDOSプロンプトでdirコマンドを打つとフォルダ・ファイルの一覧が表示されますが、その中にファイルサイズが表示されています。
このサイズを合計できるコマンドはありませんか?
DIRコマンドのオプションを調べましたがそれらしいものが見当たりません。
具体的には
C:\xxx\配下に50個程度のファイルがあります。
その50個の合計サイズを知りたいです。
xxxフォルダの親フォルダにはアクセス不可です。

ずーっと悩んでいます。よろしくお願いします。

なお、OSはWindowsNTか2000で使用予定です。

Aベストアンサー

カレントドライブ、カレントフォルダを
C:\xxx\
にした状態で、

dir /s /a-d

/sパラメータででサブディレクトリすべてを検索
/a-dパラメータでディレクトリ以外のファイル(つまり属性に関係なくすべてのファイル

これを実行すると最後にファイルの個数とファイルサイズの合計を表示します。

もし、隠し属性のファイルは合計しないのであれば、

dir /s

だけで良いと思われます。

Qコマンドプロンプトでフォルダの容量を表示させるには

コマンドプロンプトを使って指定したフォルダ直下のファイルやフォルダの各容量を表示させたいです。
dir "フォルダ名" /s a-dを実行すると以下の様に表示できることから
-------------------------------------------
"xxxのディレクトリ"
xxx
xxx
xxx
xxx
n個のファイル xxxバイト
--------------------------------------------

パイプを使って以下の様なイメージでfindでor条件を使い、フォルダ名とバイト数を表示させたいのですが、findにはor条件がないという噂を聞き、落胆しています。

(コマンドのイメージ)---------------------------------
dir "フォルダ名" /s a-d | find "のディレクトリ"or"バイト"

---------------------------------------------------
(結果のイメージ)-----------------------------------
"xxxのディレクトリ"
n個のファイル xxxバイト

"xxxのディレクトリ"
n個のファイル xxxバイト

"xxxのディレクトリ"
n個のファイル xxxバイト

ファイルの総数:
     xxx個のファイル   xxxxバイト
xxx個のディレクトリ   xxxxxバイトの空き容量
---------------------------------------------------

上の様なイメージで出力できるようなコマンド、どなたか教えて下さい。
宜しくお願いします。

コマンドプロンプトを使って指定したフォルダ直下のファイルやフォルダの各容量を表示させたいです。
dir "フォルダ名" /s a-dを実行すると以下の様に表示できることから
-------------------------------------------
"xxxのディレクトリ"
xxx
xxx
xxx
xxx
n個のファイル xxxバイト
--------------------------------------------

パイプを使って以下の様なイメージでfindでor条件を使い、フォルダ名とバイト数を表示させたいのですが、findにはor条件がないという噂を聞き、落胆しています。

(コマ...続きを読む

Aベストアンサー

こんにちは。

findの代わりにfindstrをつかわれたらどうでしょうか。

dir /s /a-d | findstr /L "ディレクトリ ファイル"

Qバッチ処理でディスクの使用領域を確認する方法

質問:
タイトルの通り、コマンドプロンプトなどバッチ処理でディスクの使用領域を調べる方法を知りたいです。

ネットで調べると、dirコマンドなどで空きディスク領域を調べる方法はよく出ていますが、
HDD(パーティション)の全体の容量がわからないので、これだとどれだけディスク領域が
使われているか分かりません。

一応、私が考えた唯一の方法としては、「chkdsk /I /C」コマンドでスキャンディスクを実行して、
完了時に表示されるログを見る方法です。
他にもっとスマートなやり方があれば是非ともご教示いただきたく存じます。


経緯:
依頼された新規PCのセットアップやパーツ選びに必要な情報を探るため、
既存のPCで情報収集のバッチを実行してもらい、その出力をテキストファイルに
出力してこちらへ送ってもらう予定です。

他の必要情報はすでにテキストに出力できるようバッチファイルに組み込み済みですが、
このディスクの使用領域だけ出し方がわかりません。
欲しい情報は[コンピューター]内のドライブを右クリックで[プロパティ]すれば見られるものですが、
先方はコンピューターの操作が非常に不得手なのでこのようなバッチファイルクリックだけで
情報が出せるようにしました。

この情報を元に必要なディスクやストレージ、バックアップ環境を選ぶ予定です。
先方の話の内容からして、既存の環境はすでにすべてWin7化されているようです。

質問:
タイトルの通り、コマンドプロンプトなどバッチ処理でディスクの使用領域を調べる方法を知りたいです。

ネットで調べると、dirコマンドなどで空きディスク領域を調べる方法はよく出ていますが、
HDD(パーティション)の全体の容量がわからないので、これだとどれだけディスク領域が
使われているか分かりません。

一応、私が考えた唯一の方法としては、「chkdsk /I /C」コマンドでスキャンディスクを実行して、
完了時に表示されるログを見る方法です。
他にもっとスマートなやり方があれば是非ともご教...続きを読む

Aベストアンサー

最適のコマンドが用意されていますよ。
たとえば ドライブ c の場合
fsutil volume diskfree c:
バイト総数、空きバイト総数が取得できますので引き算すれば使用領域も解ります。
結果はドライブのプロパティでの表示と一致します。
添付画像参照。(添付画像の数値は処理タイミングのズレのため一致していません)

Qバッチファイル フォルダサイズの取得方法

お世話になっております。

WindowsXP環境にて下記のバッチファイルにて【D:\test】直下の【sample】フォルダの
サイズを調べるバッチを作成予定です。

DIRコマンドで何かしらのオプションでどこかのテキストにサイズを出力し、
それを変数に読み込む・・・も考えましたが、二度手間に思えます。

どうにかわざわざテキストファイルに出力せずに直接変数にフォルダサイズを格納する
バッチファイルは可能でしょうか?

VBSではなく、バッチファイルで実現したいのです。

ご存知の方がいましたら、ご教授願いますでしょうか?

何卒宜しくお願い致します。

Aベストアンサー

こんなの発見。
http://scripting.cocolog-nifty.com/blog/2008/11/post-588f.html

Qbatである文字列内に特定の文字列が含まれているか確認したい

batファイルの中である変数「abc」の中に「test」という文字が含まれていたら○○を行なうという分岐を作成したいのですが、どのように行なえばよいのでしょうか?

そのまま、ずばりのお答えお待ちしております。

よろしくお願い致します。

Aベストアンサー

大文字小文字を区別しなくていいなら、

if not "%abc:test=%" == "%abc%" echo 含まれていた

区別するなら、

echo %abc% | find "test" >NUL
if not ERRORLEVEL 1 echo 含まれていた

Qサーバ内のフォルダ名と各フォルダのサイズを取得

VBS初心者ですが、上司に依頼されて、次の目的のVBSを
作成することとなりましたので、皆様の知恵をお貸し下さい。

1、業務サーバー内に50前後のフォルダが存在する。
2、そのサーバ内のフォルダ名とサイズ(MB表示)を取得する。
3、最終的には、取得したフォルダ名とサイズをcsvで出力する。

現在は、月一でサーバー内の各フォルダのプロパティからサイズを取得して、
エクセルで管理をしているのですが、毎月のようにフォルダが10個単位で増減しているため、
作業に取られる時間が馬鹿にならないので、VBSにて一覧取得をできないか
と相談されました。
私のスキルでは、各フォルダ毎のファイル名とサイズを取得することは
出来るのですが、出来れば、一度の操作で全部の作業を終わらせたいので、
皆様のお力をお貸し下さい。

Aベストアンサー

追伸。
http://www.vector.co.jp/soft/cmt/win95/util/se030005.html
↑社内でフリーウェアの使用が認められていれば、このようなソフトは?
上記リンクは適当なフォルダに解凍して実行ファイルを開けば即座に実行されますし
(インストール不要なのでFDに入れておいて他PCでの作業も簡単)
ネットワーク対応、CSV出力対応なので楽チンです (^^ゞ

QDOSプロンプトでのファイルサイズの取得

こんにちは
MS DOSプロンプトでファイルサイズの取得の仕方がわかりません。
個人的には、バッチファイルを作って、ある特定のファイルのサイズを
バイト単位で表示させたいと思っているのですが、
どうしてもうまくいきません。
どなたか教えていただけないでしょうか。
アドバイスお願いします。

Aベストアンサー

目的がよくわからないのですが、指定ファイルのサイズを表示するだけなら・・・

@ECHO OFF
SET FNAME=D:\Sample.txt
CALL :SUB %FNAME%
GOTO :EOF
:SUB
ECHO %~z1バイト
EXIT /B

※このBATは、変数FNAMEに設定したファイルのサイズを表示します。

Qバッチでテキストファイルから任意の行のみ取得したい

batファイルを作成していて、
txtから特定の行のみをとりだし、変数に入れたいです。
どうもよくわからないので質問したいと思います。
まず以下の様なテキストファイルがあります。
-------------------
111
222
333
-------------------
実際の値、行数は違いますが、こんな感じに文字列が複数行並んでいます。

行いたい動作は、
-----------------------------------------
1.テキストファイルの1行目を変数Textに入れる(set Text=111)
2.変数Textを使用し色々処理をする
3.テキストファイルの2行目を変数Textに入れる(set Text=222)
4.変数Textを使用し色々処理をする
-----------------------------------------
コレを繰り返します。
2と4は同じ動作ですので、行数のカウンタを設定しループさせる予定です。
n行目を全て取り出す方法がわかれば行けると思うのですが、
どうも見つかりません。ご存知の方がいればお教え願いたいと思います。

batファイルを作成していて、
txtから特定の行のみをとりだし、変数に入れたいです。
どうもよくわからないので質問したいと思います。
まず以下の様なテキストファイルがあります。
-------------------
111
222
333
-------------------
実際の値、行数は違いますが、こんな感じに文字列が複数行並んでいます。

行いたい動作は、
-----------------------------------------
1.テキストファイルの1行目を変数Textに入れる(set Text=111)
2.変数Textを使用し色々処理をする
3.テキストファイルの2行目を変数T...続きを読む

Aベストアンサー

No3ですが、たぶん提示したスクリプトを見ると、ある事に気がつくはず?

findstr /n /r "." a.txt | findstr /r "^3:"

で3行目を表示してくれます。え!? それだけ。そうなんです

ただ、あと、先頭の”3:” をどうやって切り離すか? と言う問題にぶつかる。さらにファイルに先頭に”3:”があった場合、どうするのか? さらに、findstr の正規表現の動作が??? 表示すれるのはいいが、変数にどうやってセットするのか?

となる。結局 for 文を使いまわす事になります。

まあ、適当に改変して、上記の問題を解決してください。

Qバッチ処理でファイルの中身を変数に入れるやり方

あるファイルの中には1行の文字列があります。
このファイルをバッチで読み取り、変数に設定したいです。

例:
test.txt
abcacbacbacbacbacbacbacbacb

test,bat
set DATA=[test.txtを読み込んだ値]

よろしくお願い致します。

Aベストアンサー

これですね。

参考URL:http://www.upken.jp/kb/dqvgHNRUxwFDkmtoqEwfXHUjDrevNv.html

Qバッチファイル 文字列にスペースがある場合

for /f %%A in ('dir /b /s c:\a aa*.pdf') do copy "%%A" D:\

これはcドライブのa aaというフォルダ名の中を検索するコードですが、
フォルダ名にスペースがあるため、うまく動きません。

"a aa"のように""で囲ってみましたが、駄目でした。

どうすれば良いのか、教えていただきたいので、お願いします。

Aベストアンサー

for /f %%A in ('dir /b /s c:\"a aa"\*.pdf') do echo copy "%%A" D:\
のようにecho でどのようなコマンドが実行されているか確認しましょう。

この記述ではdirコマンドで表示されるパスの中に空白があるため %%A には空白までの文字列しか代入されません。
以下のように修正して試してみてください。

for /f "delims=" %%A in ('dir /b /s c:\"a aa"\*.pdf') do copy "%%A" D:\


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

人気Q&Aランキング