FUNCTION to count NUMBER of files matching a pattern and specific length/not length

Oct 18, 2009
342
15
I realize this can be done with a custom routine. I'm wondering if there is a single function to do this (or command that sets a variable):

We download multiple date-named files with the name format XYZ_DEN_yyyymmdd.txt, e.g., XYZ_DEN_20191222.txt. There is one file per day, so on Mondays that would normally be 3 files.

Those files usually are empty, i.e., zero-length, but sometimes not. Today there is one length 385 and two length 0.

We also get files (with a different name pattern) that sometimes only contain a header, one header is length 566 and the other is length 662.

I'm wondering if there is a function that basically returns the following:

1) In a folder or set of subfolders
2) Look for all filenames matching a specific pattern
3a) Return the number of matching files that are a specific length
-or-
3b) the number of matching files that are not that specific length.
 
Jun 2, 2008
312
1
Newton, MA
After you run the DIR command, the environment variable "_dir_files" will contain the number of files found. So if you can come up with a DIR command with ranges and file specifications that will (or would) display the files you are interested in, then that variable can be used to get the count. The size range specification can be used to select or exclude files of specific size ranges. If you really need this to be a function, you probably could define a custom function.
 
Jun 2, 2008
312
1
Newton, MA
Indeed. The function @FILES probably uses the same code. The one difference I've discovered is that DIR can be used with multiple file specs (DIR a*.txt b*.docx). Each matching set is displayed separately, but the variable _dir_files contains the total count. The @FILES function does not accept multiple file specs.
 
Oct 18, 2009
342
15
THANKS!

It looks like this will work:

[F:\CLIENT DOWNLOADS\TXE]echo %@files["F:\CLIENT DOWNLOADS\THR\In Q_A\2019\z 11
- Nov 2019\*\zcs_20??-??-??*.txt" /[s566,566]]
30

Note that this was run from the \TXE folder even though it's looking in a different folder.

"Count all files of length 566 (header only) in any subfolder of \THR\In Q_A\2019\{month}\{day subfolders}\
that matches the pattern "zcs_{date} (no records).txt"