• ベストアンサー

バッチファイルでフォルダ内のファイル数をカウントしたい

こんにちは。よろしくお願いします。 WindowsServer2003環境で、 バッチコマンドで以下のことをしたいと思っています。 (1)特定のフォルダに存在するファイル数をカウント (2)既定の数あれば何もせず終了、数に相違があればエラーを返す。 (エラーはエラーレベルとSEND MESSAGEの出力) 既定の数は常に決まった数です。 やりたいことは簡単なのですが、 DOSコマンドだけだと方法が思いつきません。。。 VBScriptなどを使わないと無理でしょうか。。。

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

  • ベストアンサー
  • shukugawa
  • ベストアンサー率30% (80/264)
回答No.1

WindowsServer2003の環境がないで、XPのコマンドプロンプトで作ってみました^^; 参考になればいいですが・・・ 規定の数はとりあえず10としています。 カレントディレクトリの(ディレクトリ含む)ファイルをカウントしています。 @echo off set i=0 for /D %%f in (*) do set /a i=i+1 if %i% lss 10 goto Short: echo ファイルが%i%個あります、 echo ファイルが10個以上のときの処理を行います。 goto Exit: :Short echo ファイルが%i%個しかありません、 echo ファイルが10個未満のときの処理を行います。 :Exit

nottikun
質問者

お礼

なるほど!出来ました。 ポイントはfor文ですね。 DOSコマンドは奥が深そうですね。 どうも有り難うございます。

関連するQ&A

  • DOSバッチで文字数カウント

    DOSバッチでファイル内の文字数をカウントする方法をご存じの方はいませんでしょうか?? UNIXでいうところの「wc -c」です。 使用OSは、Windows2003ServerとWindowsXPです。 ユーティリティーなどは導入できず、DOSバッチで実現しなくてはなりません。 どなたかご助力をお願いいたします。

  • UNIXshellをWINDOWSバッチファイルへ

    UNIXshellをWINDOWSで動かすために、バッチファイルを作成しております。UNIXコマンド→DOSコマンドへの変換で、なかなか対応するコマンドがありません…。商用なのでなかなかフリーのツールが使用できないので、VBscriptで対応できないものは組もうと思っているのですが、VBScriptの経験がありません…。お勧めの本がありましたら、ご教授頂きたいので、よろしくお願い致します。

  • テキストファイル結合のバッチコマンド

    DOSプロンプトで、「copy」というコマンドを使って特定のフォルダ内のテキストファイルを全て読み込んで結合するバッチファイルを作りたいのですが、わかる方教えてください。

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

    ひとつのフォルダーにある、いくつかのファイルから、サイズの大きなものを特定し、別のフィルダーへ移動するdos バッチファイルをお教えいただけないでしょうか? よろしくお願いいたします

  • バッチファイルでカウントアップするには

    :loop set id=0 if '%1' == '' goto end cd %1 if exist %1 for %%i in (*.bmp) do ( set id+=1 echo %id% ) shift goto loop :end pause バッチファイルをSend Toフォルダにおいて 送られてきた画像データをカウントアップしていきながら名前を id.bmp変えていきたいのですが、 idをカウントアップさせたいのですが方法がわかりません。 どうすればカウントアップされるのでしょうか?

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

    WindowsのDOSコマンドを用いたバッチファイルで、バッチファイルと同じフォルダにある実行ファイルを起動したいのですが、どのようにするのがよいのでしょうか? 実行ファイルのファイル名は既知で固定なので、バッチファイルの親フォルダが取得できれば、連結して起動すればよいです。 しかし、バッチファイルの親フォルダの取得方法が分かりません。 カレントフォルダは%CD%で取得できるのですが、バッチファイルの親フォルダがカレントフォルダとは限りません。 バッチファイルのフルパスは%0で取得できるのですが、そこからフォルダ部のみを抽出する方法が分かりません。 よろしくお願いします。

  • フォルダごとのファイル数を数えるためのバッチ

    フォルダごとのファイル数を数えるためのバッチをネットで調べて作成しました。 このバッチファイルを親フォルダ直下に配置し、ダブルクリックで実行しています。 ------------------------------------------------------------------------- @echo off setlocal enabledelayedexpansion set /a counter=0 dir %1 /ad /s /b >trash.csv for /f "tokens=1 delims=," %%i in (trash.csv) do ( set /a counter = 0 for %%A in (%%i\*) do ( if exist %%A ( set /a counter=counter+1 ) ) echo %%i : !counter! ) ------------------------------------------------------------------------- しかし、結果は、フォルダ名は取得していますが、ファイル数が取得できていません。 こんな感じです。 setlocal コマンドに無効なパラメータが指定されました d:\画像\フォルダ1 = 0 d:\画像\フォルダ2 = 0 d:\画像\フォルダ1\フォルダ3 = 0 どたなかどこが間違っているのかご指摘ください。

  • バッチファイルでファイル数計算

    現在仕事で一日に大量のファイルが作成され、それの集計を行っています。ですので、そのファイルの集計を行えるバッチファイルを作成していますが、思ったものができません。 特定のファイル数の集計は行えるのですが、作成された時間おきに集計できるようにしたいんです。 例えば、 9:00に2ファイル作成された バッチファイル実行→ログには9:00分が出力 (ファイル名及びファイル数2がログとして出力) 10:00には50ファイル作成された バッチファイル実行 ↓ ログに以下が出力 9:00に出力分 10:00に出力分(ファイル名及びファイル数が50としてログ に出力) このようなことをバッチファイルで作成する事は無理でしょうか? ご助言宜しくお願い致します。

  • こんなバッチファイルってできますか?

    あるディレクトリから実行するプログラムがあります。 このプログラムは、パラメタを取り込みますが、常に同じ物ではありません。 コマンドが長いので、パラメタを入力するだけの状態でコマンドを表示させるにはどうすればよいでしょうか。 具体的にいうと『evtutlnt ustatusall -s 開始番号 -e 終了番号』 このコマンドをDOSプロンプトに表示するバッチファイルを作りたいのです。

  • 1つ下のファイルをコピーするバッチファイル

    コマンドプロンプトで実行するバッチファイル(x.bat)で C:\Aというフォルダのさらに1つ下のフォルダ (このフォルダは1つのみで名前は毎回変化します) の中にあるc.mpgというファイルを D:\Bフォルダにコピーするバッチファイルを 作りたいのですがどのように記述すればよいのでしょうか。 例えば、C:\A\data_20120922195626というフォルダ (data_20120922195626というフォルダ名は任意の名前ですが C:\Aフォルダの中にはこのフォルダ1つしかありません) の中に\c.mpgというファイルがあるとします。 バッチファイル x.bat を実行すると D:\Bフォルダにc.mpgをコピーしたいのです。 なお、data_20120922195626というフォルダの名前は バッチファイルを実行する時には毎回異っていますが バッチファイル実行中は変化しません。 VBscriptやwshなどは使わずWindosXPの標準DOS機能のみで お願いします。(WindosXP SP3)