• ベストアンサー

ファイル容量での警告

宜しくお願い致します。 使用OS WindowsXP Professional SP3 バッチ実行時にWindowsLiveMailの C:\Documents and Settings\ユーザ名\Local Settings\Application Data\Microsoft\Windows Live Mail の容量が10GBを超えていたら。 プロンプト画面で止まる(PAUSE)バッチを作成したいのですが、 誰かご教授頂けないでしょうか? お忙しい所申し訳ございませんが、宜しくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • deadline
  • ベストアンサー率63% (1239/1943)
回答No.1

@echo off set LFolder="%UserProfile%\Local Settings\Application Data\Microsoft\Windows Live Mail" set /a FSize=0 for /f "delims=" %%i in ('dir /b /s %LFolder%\*.*') do set /a FSize=!FSize! + %%~zi if !FSize! GTR 10737418240 Pause 解説: 1行目:コマンド出力の抑制 2行目:変数 LFolder に"Windows Live Mail"フォルダをセットします。(ユーザーごとに異なるフォルダなので、"C:\Documents and Settings\(ユーザー名)"の部分を%UserProfile%で指定しています。) 3行目:合計サイズ計算用の変数 FSize を初期化(0 をセット)します。 4行目:括弧内の'dir /b /s %LFolder%\*.*'が実行され、"Windows Live Mail"フォルダ内の各ファイルのファイル名が順番に変数 %%i に入り、"do"以降の"set"コマンドが繰り返し実行されます。通常、環境変数の参照は、"%FSize%"のように"%"記号を用いますが、"for"文中での処理では、"for"文の実行前の値が使われてしまうので、"!FSize!"で遅延環境変数の参照という機能を利用しています。"%%~zi"の部分で、変数 %%i に入ったファイルのサイズを読み出しています。 5行目:"Windows Live Mail"フォルダ内の全ファイルの合計容量が10GBを超えていたら、一旦停止します。 なお、バッチファイル内での遅延環境変数の展開機能を有効にする必要がありますので、『コマンドプロンプト』を起動する際には、[スタート]⇒[ファイル名を指定して実行]の入力欄に、 cmd /v:on と"/v:on"オプションを付けて入力してください。

hisaonion
質問者

補足

早速ありがとうございます。 助かります! さて、実行しましたが、 演算子がありません。 演算子がありません。 演算子がありません。 演算子がありません。 演算子がありません。 ・ ・ ・ と出て、プロンプト画面が消えます。

その他の回答 (1)

  • deadline
  • ベストアンサー率63% (1239/1943)
回答No.2

バッチファイルを直接実行すると、『遅延環境変数の参照』機能が無効な状態で実行されるために、補足欄のような『演算子がありません。』というエラーメッセージが表示されてしまいます。 面倒ですが、下記のようなショートカットを作成して、そのショートカットから起動するか、下記のレジストリの設定を変更してください。 %SystemRoot%\system32\cmd.exe /v:on /c "バッチファイルのフルパス" バッチファイルを直接実行しても機能するようにするためには、レジストリの『コマンドプロンプト』の設定に下記の設定を書き加えて、『遅延環境変数の参照機能』を有効にしておきます。 ユーザーごとに設定する場合:(ログオフ⇒ログオン後、有効になります。) [HKEY_CURRENT_USER\Software\Microsoft\Command Processor] "DelayedExpansion"=dword:00000001 全ユーザーに対して設定する場合:(PCの再起動後に有効になります。) [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor] "DelayedExpansion"=dword:00000001

hisaonion
質問者

お礼

できました! レジストリに項目追加しないとダメなんですね・・ もっと簡単にできると、甘く考えていました。 本当にありがとうございます!