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

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

下記の様に、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
    • 1
この回答へのお礼

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

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と関連する良く見られている質問

Q(Win7)アイコンの縮小版表示をフォルダ毎に設定

(1)あるフォルダーにJPEG写真が入っています。
このフォルダーでは、各ファイルのアイコンを縮小版で表示させたいです。
アイコン表示は、「大」です。

(2)デスクトップにpdfなどのファイルを置いています。
デスクトップのアイコンは、縮小版で表示せず、*.pdfはPDFのアイコンで表示させたいです。

上記(1)のフォルダーから、「ツール」→「フォルダーオプション」→「表示」→「常にアイコンを表示し、縮小版は表示しない」のチェックがありますが、これをチェックすると、(1)も(2)も縮小版表示されなくなります。
チェックをはずすと、(1)も(2)も縮小版で表示されてしまいます。

(1)は、縮小版で、(2)は普通のアイコンで表示させたいのですが、どうすればよいでしょうか?
WindowsXPまでは、各フォルダー毎に設定ができたような記憶があるのですが。


OSは、Windows7(32bit)です。
クラシックテーマにしています。

Aベストアンサー

フォルダごとに縮小表示を使う、使わないということでしょうか。
その場合、設定を変更後、下のほうの適用ボタン→OKボタンではどうでしょう?
私のWin7では、こうした設定が可能です。ただし、上の方のフォルダーに適用をクリックすると、同種のファイルが有るフォルダー全てに適用されてしまいます。

Qバッチファイルの親フォルダを取得するには

WindowsのDOSコマンドを用いたバッチファイルで、バッチファイルと同じフォルダにある実行ファイルを起動したいのですが、どのようにするのがよいのでしょうか?
実行ファイルのファイル名は既知で固定なので、バッチファイルの親フォルダが取得できれば、連結して起動すればよいです。

しかし、バッチファイルの親フォルダの取得方法が分かりません。

カレントフォルダは%CD%で取得できるのですが、バッチファイルの親フォルダがカレントフォルダとは限りません。
バッチファイルのフルパスは%0で取得できるのですが、そこからフォルダ部のみを抽出する方法が分かりません。

よろしくお願いします。

Aベストアンサー

%~dp0
の方がいいんじゃないかな?

QMac OS10.9のフォルダアイコンについて。

Mac OS10.9のフォルダアイコンについて。
現在OS10.3.9を使っています。以前OS9.0用のフリーウエアをダウンロードをして起動したところ、9.0用のシステムフォルダーのアイコンがそのフリーウエアのアイコンに書き換えられてしまいました。それ以来、フリーウエア本体とアイコンを削除したにもかかわらずそのアイコンが残っています。削除した時はいったん本来のシステムフォルダーのアイコンに戻るのですが、気が付くとまた書き換えられています。本来のフォルダアイコンに戻したいのでどなたか方法を教えて下さい。フリーウエアの作者の方にメールで訪ねてみたのですが返信が有りません。『がちゃぽん』とかいったタイトルだったように記憶しています。これは嫌がらせソフトウエアなのでしょうか。。。。。
困っています。アドバイスよろしくお願いします。

Aベストアンサー

念のため次のことを試してみてください

・OS9でのデスクトップ再構築(OS9でマシンを起動)
・その9.0のシステムフォルダがクラシック環境用のものなら、クラシック環境設定からデスクトップの再構築
・OSX上からプリバインディング
http://nmuta.fri.macserver.jp/terminal6.html

Qバッチファイル ネットワークドライブを作成

いつもありがとうございます。

今、ネットワークドライブを作成するバッチファイルを作成(google検索でサンプルを頂いて)したのですが
ネットワークドライブを作成するために、batファイル内に「ユーザ名」・「パスワード」を入力しておく必要があります。また入力したアカウントで参照先にログオンできてしまいます。

今回やりたいことは、ネットワーク作成バッチを実行したらネットワークドライブが作成され、アクセスする際にはユーザ名とパスワード入力の画面を表示させるようにしたいのです。

□環境----------------------------------------------------------

クライアント:Vista
>参照先(1):\\192.168.0.1\aaa
>ドライブレター:X:\

>参照先(2):\\192.168.0.2\bbb
>ドライブレター:Y:\

・ネットワークから\\192.168.0.1へアクセスする際は認証画面が表示される。
・各ネットワークドライブ接続時に認証画面を表示する。
-----------------------------------------------------------------

いろいろなバッチファイルを試しましたが、ファイル内に「ユーザ名・パスワード」を入力しておかないと
コマンドプロンプト画面で入力を求められ、ネットワークドライブが作成できません。
スクリプト作成の知識がなく困っております。
もし、参考になるURLやバッチファイルを作成できる方がいらっしゃいましたら
ご教授頂けますでしょうか。

宜しくお願い致します。

いつもありがとうございます。

今、ネットワークドライブを作成するバッチファイルを作成(google検索でサンプルを頂いて)したのですが
ネットワークドライブを作成するために、batファイル内に「ユーザ名」・「パスワード」を入力しておく必要があります。また入力したアカウントで参照先にログオンできてしまいます。

今回やりたいことは、ネットワーク作成バッチを実行したらネットワークドライブが作成され、アクセスする際にはユーザ名とパスワード入力の画面を表示させるようにしたいのです。

□環境----...続きを読む

Aベストアンサー

>ご回答頂き、ありがとうございます。
>実現したいことがわかりづらかったですね、申し訳ありません。

いえいえ、質問者さんの実現したいことはわかっていたつもりです。
ただ、もしかしたら運用をちょっとかえれば実現できる場合があるかもと思って確認しようと思ったということです。

>やはり同じようなことを実現することは難しいでしょうか

前の回答でも書きましたがちょっと難しいですね。
運用を見直す方向を検討する必要がありそうです。

Qフォルダタスクを消したい + 規定のアイコンの画像を抽出したい

フォルダーのアイコンを変更したところ、フォルダを開くとフォルダの右側に『ファイルとフォルダのタスク』『その他』『詳細』などが出るようになってしましました。
以前も同じ失敗をしてその時は何とか消したのですが、今回は幾ら探しても消し方が分りません。
消す方法を教えていただきたいです。

もう一つは、フォルダのアイコンを自分で弄りたいと思っています。
既存のアイコンをちょっと弄るだけのつもりなのですが、既存のアイコンのデーターをどのようにして取り出したらよいのかが分りません。
『C:\WINDOWS\system32\shell32.dll』辺りにあるのは分るのですが、それ以上が分らないです。

どなたか回答してくださるととても助かります。

Aベストアンサー

タスクは
フォルダ上部のツール→フォルダオプション→全般タブの作業→従来のWindowsフォルダを使う にすれば大丈夫だと思います。
もう一つの方法としては

マイコンピュータ右クリックのプロパティ→詳細設定タブのパフォーマンスの設定→視野効果タブでカスタムに→フォルダでよく使用するタスクを使用する。のチェックを外す
で、大丈夫だと思います。
全く別物だったらすいません。左側のタスクなんで(´Д`

アイコンを取り出すとき、私は彩彩畑というフリーソフトを使っていました。Windowsのシステムアイコンも使えたと思います。他にも色々あると思いますが…一応URL貼っときますね

参考URL:http://www.hm.h555.net/~irom/ssb_1/ssb_1.htm,http://www.hm.h555.net/~irom/ssb_help/ssb_help_3.htm

Qバッチファイルを作りたい。

早速ですが、
私のパソコンは何処で狂ったのか、
電源マークとボリュームコントロールがタスクバーに表示されません。
そのため、再起動、立ち上げの都度、コントロールパネルを開け、
電源オプションと、サウンド何タラを開いて、「アイコンをタスクバーに表示する」を
実行しています。
(アイコンを出す方法については十分やってみましたが、結局上手く行かず諦めました。)

そこで質問です。
この一連の作業をボタン一発で解決できないでしょうか。
具体的なコードを貰えれば理想ですが、ヒントでもなんでも構いません。
宜しくお願いします。

Aベストアンサー

http://www.windowsstyle.net/bbslog/0558.html

よくわかりませんが↑と同じですかね?

QLAN上フォルダのワイヤー付きアイコンをなんと呼ぶのですか?

wXPのマシンに「コンテナxpーAMD」と言うファイル
w2Kのマシンに「コンテナ2kーT100」を作っています。
Explorerで確認すると
C:\Documents and Settings\Administrator\NetHood\
以下の 相手マシンのフォルダーアイコンにはワイヤーの様な物が付いています。これを何ホルダーと呼ぶのですか?
  マシン名にAMDやT100使用。CPUやマザーボード名。

Aベストアンサー

「ネットワークドライブ」や、「ネットワークフォルダ」でいいかと思います。

QMACで動作するバッチファイル

いつもありがとうございます。

今回、Z Shell(?)にて下記の内容で作成したいと思っております。
自身触ったこともない環境なのですが、アドバイスをお願いできないでしょうか。

■環境
・MAC OSX
USBにてスクリプトを持ち運び、実行する端末での入力情報を取得

■仕様
(1)当スクリプトを実行すると、GUI入力画面を表示。
 ∟ユーザ名を入力するテキストボックス
 ∟端末番号を入力するテイストボックス

(2)実行ボタンを押下時、「完了」とメッセージを表示。
上記入力値と「ホスト名」・「IPアドレス」・「MACアドレス」・「インストールされているプログラム一覧」を同ディレクトリにCSVに出力。(get.csv)

(3)次の端末で実行する場合、get.csvに追記していく

上記のようなスクリプトを作成したいのですが、当スクリプトは触ったことがなく、見当もついていません。
教えて教えてで申し訳ございませんが、どのようなく記述になるか教えて頂けませんでしょうか。

見当違いのお願いをしているかもしれませんが、ご確認宜しくお願い致します。

いつもありがとうございます。

今回、Z Shell(?)にて下記の内容で作成したいと思っております。
自身触ったこともない環境なのですが、アドバイスをお願いできないでしょうか。

■環境
・MAC OSX
USBにてスクリプトを持ち運び、実行する端末での入力情報を取得

■仕様
(1)当スクリプトを実行すると、GUI入力画面を表示。
 ∟ユーザ名を入力するテキストボックス
 ∟端末番号を入力するテイストボックス

(2)実行ボタンを押下時、「完了」とメッセージを表示。
上記入力値と「ホスト名」・「IPアドレス」・「MAC...続きを読む

Aベストアンサー

たとえば

//get.sh ここから
#!/bin/sh

out="get.txt"
hostname >> $out ;
ifconfig | grep inet >> $out;
ifconfig | grep ether >> $out;
pkg_info >> $out;
// ここまで

みたいなかんじのget.shをつくって

chmod 755 get.sh

で実行属性をつけておき

./get.sh

で実行する。

ちなみに、いわゆるカンマ区切りのcsvにするのは難しいですよ
なにせ、ホストごとにIPアドレスがやMACアドレスは複数存在する可能性があり
インストールされているプログラムなんてそれこそ大量にあるのだから

Qアイコンを変更したフォルダをサーバーへコピーするとアイコンが戻る…

フォルダのアイコンを、フォルダ>プロパティ>アイコンの変更で、カスタムアイコン(ビットマップ画像に拡張子.icoつけたもの)に変更して、それをサーバーにコピーしたり他の端末にコピーしたら単なる普通のフォルダのアイコンに戻ってしまいます。

どうすれば変更したアイコンのまま他の端末にコピーできるのでしょうか…。誰かご存知の方、教えてください。よろしくお願いします。

OS:Windows XP

Aベストアンサー

カスタマイズ情報はアイコンを変更したフォルダ内のdesktop.iniに保存されています。

検証していませんが、次の手順でアイコンを変更すればうまくいくかもしれません。
よければ試してみてください。

(1)適当なフォルダで「ツール」→「フォルダオプション」の「表示」タブで
「すべてのファイルとフォルダを表示する」にチェックを入れます。
「保護されているオペレーションシステムファイルを表示しない」のチェックを外しま

(desktop.iniを表示するため)

(2)アイコンを変更したいフォルダにカスタムアイコン(例:hoge.ico)をコピーし、「プロパティ」で「隠しファイル」にチェックを入れます(フォルダオプションの設定を元に戻したときカスタムアイコンを非表示に)。

(3)「プロパティ」の「アイコンの変更」で(2)でコピーしたカスタムアイコン(hoge.ico)を指定します。これでフォルダ内にdesktop.iniが作成されます。

(4)desktop.iniをダブルクリックして開きます。
IconFile=・・・\hoge.ico

IconFile=hoge.ico
とファイル名だけに変更し上書き保存します。

(5)フォルダオプションの設定を元に戻します。

カスタマイズ情報はアイコンを変更したフォルダ内のdesktop.iniに保存されています。

検証していませんが、次の手順でアイコンを変更すればうまくいくかもしれません。
よければ試してみてください。

(1)適当なフォルダで「ツール」→「フォルダオプション」の「表示」タブで
「すべてのファイルとフォルダを表示する」にチェックを入れます。
「保護されているオペレーションシステムファイルを表示しない」のチェックを外しま

(desktop.iniを表示するため)

(2)アイコンを変更したいフォルダにカ...続きを読む

QバッチファイルのFOR文について【tokens~】

お世話になっております
バッチファイルの、文字列操作で
----------------------------------------------------------
FOR /F "eol=; tokens=2,32 delims=, " %i in (myfile.csv) do @echo %i %j %k
----------------------------------------------------------
のtokensで指定している32列目(カンマが32個目)以降の値を
取得しません。
なぜでしょうか。

下記のHPを参照すると、一度変数をクリアしそのしたでさらにForで
指定すればよいとのことなのですが、欲しい値が多すぎて
とても、Forのしたに何度書きたくありません。
http://folomy.jp/heart/?m=pc&a=page_c_topic_detail&target_c_commu_topic_id=12560
どのようにしたら、目的を果たせるのでしょうか。
ご教授ください。

お世話になっております
バッチファイルの、文字列操作で
----------------------------------------------------------
FOR /F "eol=; tokens=2,32 delims=, " %i in (myfile.csv) do @echo %i %j %k
----------------------------------------------------------
のtokensで指定している32列目(カンマが32個目)以降の値を
取得しません。
なぜでしょうか。

下記のHPを参照すると、一度変数をクリアしそのしたでさらにForで
指定すればよいとのことなのですが、欲しい値が多すぎて
とても、Forのした...続きを読む

Aベストアンサー

#1です。
リンク先を見落としていました。今試してみしたら確かに32以降は指定しても取得できないようです。仕様ですかね。
具体的にどれくらいの列を指示したいのでしょうか。
リンク先のような方法か、call文の引数で渡してサブルーチンで分解するくらいしか方法が思いつきません。スミマセン。


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

人気Q&Aランキング

おすすめ情報