• ベストアンサー

バッチファイルでファイルサイズの合計を求める

こんにちは。パソコン初心者なのですが、現在MS-DOSのバッチファイルで、ファイルのサイズの合計を求めるものを作っているのですが、うまくいきません。分かる方がいれば教えていただけませんでしょうか。 現在 set i=0 for %%1 in (*.*) do (set /a %%i=%%i+%%~z1) のように書いているのですが、「オペラントがありません」 と表示されてしまいます。 カレントディレクトリのすべてのファイルのサイズだけを合計したいのですが、どのようにやればよいのでしょうか。 よろしくお願いします。

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

  • ベストアンサー
  • pita-gora
  • ベストアンサー率70% (102/145)
回答No.3

こんにちは。 環境変数の参照方法が間違っていますね。 set i=0 for %%1 in (*.*) do set /a i=i+%%~z1 set i こんな感じでしょうか。set /a の時は環境変数を(%などつけずに)そのまま式に書くことができます。最後のset i は環境変数iの設定値を表示しています。

satuki1969
質問者

お礼

教えていただいた通りにやりましたらうまくいきました。 ありがとうございました。

その他の回答 (2)

回答No.2

ファイルサイズのみの抽出は無理だと思うのですが。 以下の方法ではどうでしょうか? dir > test.txt find "ファイル" test.txt 一度ディレクトリの内容をtest.txtに吐き出し、ディレクトリ内のファイル数と使用容量が表示できます。

  • SEWANIN
  • ベストアンサー率34% (203/592)
回答No.1

  satuki1969 様  カレントディレクトリとはフォルダのことを  指しておられるのでしたらそのフォルダを  右クリックしてプロパティから  そのフォルダに収容されているサイズの合計を  ご覧になれます。  敢えてDOSのバツチファイルをお作りにならなくても  宜しいかと存じます。

関連するQ&A

  • バッチファイルのfor文を使ってファイルサイズをMbyteで表したい。

    バッチファイルのfor文を使ってファイルサイズをMbyteで表したい。(WindowsXP) for文を使って、フォルダー内のファイル名とサイズ一覧を作ろうとしています。 1)for %%i in (c:\test\*.*) do echo %%i %%~zi>> c:\test\testfiles.txt で一応はできたのですが、これではファイルサイズがわかりにくいので、メガバイト単位にしたいのです。(だいたいわかればいいので1024で割るとかはしない) 2)for %%i in (c:\test\*.*) do echo %%i %%~zi/1000000>> c:\test\testfiles.txt 3)for %%i in (c:\test\*.*) do set /a x=%%~zi/1000000 & echo %%i %%x>> c:\test\testfiles.txt としてもうまくいきません。 %%~ziが数値でなく文字列のため、だと思うのですが、3)は%の付け方とかも間違ってそう。 どう書けばメガバイト単位で一覧を出せるでしょうか? あれ? 4)for %%i in (c:\test\* ) do if %%~zi GEQ 1000000 echo %%i>> c:\test\testfiles.txt とすれば1メガ以上のファイル名一覧が出ますね。 ということは%%~ziは数値なのか。  どなたか、どこが間違っているのか教えていただけないでしょうか

  • nkfのバッチファイル

    親ディレクトリ以下のすべてのテキストファイルの文字コードをutf-8に変えようと思い、以下の内容のバッチファイルを作りました(nkf32.exeはバッチファイルと同ディレクトリに置いています)。Cドライブ(デスクトップ)上で実行したところ、問題なく動いたのですが、USBメモリ(Dドライブ)に置いて実行するとうまく動きません。ご教示お願いします。 >test.bat for /R .. %%i in (*.txt) do ( nkf32.exe -w8 --overwrite %%i )

  • MS-DOSバッチファイルで

    度々ご教授お願い致します。 以下のようなMS-DOSバッチファイルで、xcopy コピー元 コピー先のようにしたいのですがこれではうまくいきません。 どのようにしたら良いでしょうか。宜しくお願い致します。 FOR /F "eol=; tokens=1,2 delims=, " %%i in (c:\a.txt) do (@echo %%i %%j) xcopy %%i %%j /s /o /y >> (@echo %%i %%j)

  • バッチファイルのfor文の使い方がわかりません。

    バッチ初心者です。 指定したフォルダのテキストファイルを一括置換するバッチファイルを作成したのですが、 for文を使うところでつまづいてしました。 for文のin( )内にディレクトリを入れると失敗してしまいます。 失敗例↓ for %%f in (d:\aaa\*.txt) do ( set fname=%%f set fname=!fname:%1=%2! ren %%f !fname! ) for文を for %%f in (*.txt) にすると成功します。 IN( )内にディレクトリを入れると処理が失敗するのはなぜでしょうか?? helpを読んでもわかりません。 試しにオプション付けて for /r d:\aaa %%f in (*.txt) do echo %%f を実行すると成功するので、 for /r d:\aaa %%f in (*.txt) do ( ・・・・ ) にしてみましたが、成功しません。。。

  • シンボリックリンク作成のバッチファイル

    親フォルダーに、aフォルダーとbフォルダーが入っています。 aフォルダー配下には、xフォルダーがあり、その中には複数のテキストファイルが入っています。 parent\a\x\test.txt parent\b\ 以下の様なバッチファイルを「送る」に登録しました。 @echo off rem 選択ディレクトリ配下のxディレクトリに移動 cd /D %1\x\ rem カレントディレクトリにあるすべてのファイルを、bディレクトリにコピー for %%i in (*.*) do ( copy "%%i" "..\..\b\" ) これにより、aフォルダーを選択してバッチファイルを実行すると、xフォルダー配下のテキストファイルがbフォルダーの中にコピーされることは確認しました。 ここで、コピーではなく、シンボリックリンク(mklink)を作成したいのですが、引数をどのように設定すればよいでしょうか。いろいろ試しましたがうまくいきませんでした。 ご教示よろしくお願いします。

  • windowsのバッチファイルについてファイルサイズが読めません(fo

    windowsのバッチファイルについてファイルサイズが読めません(for構文) はじめまして。バッチファイル作成にあたりわからなかったことがありまして 私自身調べたのですが、初心者のためよく分りませんでした。 どなたかおわかりになる方、お力を貸していただけないでしょうか。 パソコンのOSはXPです。 大学院修士の研究で、以下のようなバッチファイルを考えています。 そして、forのところでInputPart.csvというファイルがあるのですが 実行してみたところ、どうやらそのファイルサイズが読めてないようなんです… if %%~zi lss 5000 という部分の値を5000から0に変更すると下の0125.exeやSimHeat.exe -99831 -cの実行プログラムが稼働するので、構文としては合っているのではと思っているのですが… ちなみにInputPart.csvの容量は4kBくらいです。 どのようにすれば、ファイルサイズが反映されるようになるでしょうか。 それとも、やはりどこか構文がおかしいのでしょうか。 すみません。お力を貸してください。 よろしくお願いします。 この下にバッチファイルの中身を示します。 @echo cd C:\1003\bin 0420.exe for /r [C:\1003\bin] %%i in (C:\1003\bin\InputPart.csv) do if %%~zi lss 5000 goto end SimHeat.exe -99831 -c 0125.exe :end

  • XPバッチプログラムについて

    すいませんおしえてください windowsXPでバッチファイルを作成しています。 動作内容は↓の通りです。 (1)バッチファイルが置いてあるカレントディレクトリ配下にある複数のディレクトリから、ファイル名に「test」を含む.txtファイルを カレントディレクトリにコピーする。(これをカレントディレクトリ配下のディレクトリがなくなるまで繰り返す) ※簡単に言うと、1つ下のディレクトリからコピーしてくるということです。 (2)既にカレントディレクトリに同じ名前のファイルが存在する場合は自動的に連番して上書きしないようにコピーする。 今、(1)については下記の通り作成して動作確認しましたが、このままでは複数のディレクトリに同じファイル名が 存在する場合に上書きされてしまいます。 (2)についてなかなか上手くコーディングできないのですが↓のプログラムに追加すればよいものを教えていただけますでしょうか? もしくは、全体的に間違っていれば、その部分もご指摘お願い致します。 @echo off for /d %%d in (*) do ( if exist %%d\*test*.txt copy %%d\*test*.txt *test*.txt ) 以上、よろしくお願い致します。

  • バッチファイルのディレクトリ内のファイル検索について

    バッチファイルのディレクトリ内のファイル検索について お世話になります。 現在カレントに6つのディレクトリとバッチがあります。 バッチを叩くと指定ディレクトリのmakeファイルというファイルを実行するようにしています。 ですが構成を変えまして、サブディレクトリのmakeファイルも実行出来るように変更したいと思っています。 どのようにすればよろしいでしょうか? 以下が現在のソースです。 @echo off setlocal enabledelayedexpansion set DIRS=libSrc clientSrc serverSrc for /d %%a in (%DIRS%) do ( cd %%a cd if EXIST makefile.mak ( make %* ) else ( if EXIST Integ.bat ( call Integ.bat %* ) ) cd ..\ ) endlocal フォルダ構成は bin clientSrc include lib libSrc serverSrc となっており、makeファイルはclientSrc、libSrc、serverSrcにあります。 そこでlibSrcだけ新たにフォルダを2つ作成し、そのフォルダの中のmakeファイルも拾えるようにしたいです。 よろしくお願いします。 bin clientSrc ---- makeファイル include lib libSrc ----|--- myLib ----- makeファイル |--- socketLib --- makeファイル serverSrc---makeファイル batファイル

  • バッチファイルで全てのファイル名を変更したい

    文字数の決まっていないbmpファイル全ての頭にP_をつける バッチファイルを作成しました。 ↓ FOR %I IN (*.bmp) DO REN %I P_%I ですが、P_が1つだけでなく何個もついてしまいます。 どなたかご教授ください。 よろしくお願いします。

  • バッチファイルの使い方について

    このサイトで、両面スキャンした画像ファイルを表面と裏面を別々のフォルダに振り分ける方法を質問して、バッチファイルを使う方法を教えてもらったのですが、上手くいきません。バッチファイルを使うのは初めてなので、どこかまずいところがあるのかと思います。 教えていただいた下記のものそのままでバッチファイルを作り、画像ファイル(jpg)を格納したフォルダに置いてダブルクリックすると、「1」「2」のフォルダができるだけで、画像ファイルは移動せず、2つのフォルダは空のままです。 どこを直せばよいのか教えてください。よろしくお願いします。 set N=1 mkdir 1 mkdir 2 for %%I in (*.jpg) do call :sub %%I goto :EOF :sub move %%I %N% set /a N=3-N goto :EOF

専門家に質問してみよう