38

私はこれに非常に慣れていません。私を助けてください

フォルダー内のファイル数をカウントし、それを変数に割り当てて表示し、保存されていることを確認するバッチファイルプログラムを作成しようとしていましたが、構文を教えてください。

よろしくお願いします-VK

4

10 に答える 10

60

隠しファイルやシステム ファイルをカウントしたくないと仮定します。

これを行うには多くの方法があります。これから紹介するすべてのメソッドには、なんらかの形式の FOR コマンドが含まれます。FOR コマンドには、ほとんど同じように見える多くのバリエーションがありますが、動作は大きく異なります。初心者にとっては混乱する可能性があります。

HELP FOR入力するかFOR /?、コマンド ラインからヘルプを表示できます。しかし、それを読むことに慣れていない場合、そのヘルプは少し不可解です。

1) DIR コマンドは、ディレクトリ内のファイルの数を一覧表示します。DIR の結果を FIND にパイプして関連する行を取得し、FOR /F を使用してその行から目的の値を解析できます。この手法の問題点は、オペレーティング システムで使用される言語に応じて、検索する文字列を変更する必要があることです。

@echo off
for /f %%A in ('dir ^| find "File(s)"') do set cnt=%%A
echo File count = %cnt%

2) を使用DIR /B /A-D-H-Sして、非表示/非システム ファイルを他の情報なしで一覧表示し、結果を FIND にパイプしてファイルの数をカウントし、FOR /F を使用して結果を読み取ることができます。

@echo off
for /f %%A in ('dir /a-d-s-h /b ^| find /v /c ""') do set cnt=%%A
echo File count = %cnt%

3) 単純な FOR を使用してすべてのファイルを列挙し、SET /A を使用して見つかったファイルごとにカウンターをインクリメントできます。

@echo off
set cnt=0
for %%A in (*) do set /a cnt+=1
echo File count = %cnt%
于 2012-06-12T21:41:43.960 に答える
7

%FOLDER%フォルダーとそのサブフォルダー内の ANY 属性を持つファイルをカウントするための最速のコードは次のとおりです。コードは、コマンド スクリプト (バッチ) ファイル内のスクリプト用です。

@for /f %%a in ('2^>nul dir "%FOLDER%" /a-d/b/-o/-p/s^|find /v /c ""') do set n=%%a
@echo Total files: %n%.
于 2016-10-25T03:08:22.157 に答える
2

ディレクトリに移動して;

attrib.exe /s ./*.* |find /c /v ""

編集

私はそれを発見するのは簡単だと思いました。使用する

Process p = new Process();
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.FileName = "batchfile.bat";
p.Start();
string output = p.StandardOutput.ReadToEnd();
p.WaitForExit();

私はこれを実行し、変数outputはこれを保持していました

D:\VSS\USSD V3.0\WTU.USSD\USSDConsole\bin\Debug>attrib.exe /s ./*.*   | find /c /v "" 13

ここで、13 はファイル数です。それは問題を解決するはずです

于 2013-03-18T19:50:20.700 に答える
1

for /F "tokens=1" %a in ('dir ^| findstr "File(s)"') do echo %a

結果:

C:\MyDir> for /F "tokens=1" %a in ('dir ^| findstr "File(s)"') do @set FILE_COUNT=%a

C:\MyDir> echo %FILE_COUNT%
4   // <== There's your answer
于 2015-04-02T20:52:28.913 に答える
1
FOR /f "delims=" %%i IN ('attrib.exe ./*.* ^| find /v "File not found - " ^| find /c /v ""') DO SET myVar=%%i
ECHO %myVar%

これは、attrib.exe ではなく DIR を使用すると、空のディレクトリのカウントが正しくなくなることを指摘した (かなり) 以前の投稿に基づいています。

コマンドを FOR ループに入れるための構文に行き詰まった他の人のために、コマンドを一重引用符で囲み (それらが含まれていないと仮定して)、パイプを ^ でエスケープします。

于 2015-09-07T09:20:41.733 に答える