In How to parse a batch parameter, I introduced the %~z1 syntax for determining the size of a file. I used this syntax in How can I determine the size of a file in a CMD script? and How can I determine the size and count of files in a folder from a command prompt or batch?

Some versions of CMD.EXE may not always properly return the file size. To workaround this behavior, I have scripted SizeFile.bat.

The syntax for using SizeFile.bat is:

call sizefile FileName size

Where FileName is the fully qualified path and file name of the file whose size you wish to determine, and size is a call directed numeric environment variable that will contain the size of the file.

SizeFile.bat contains:

@echo off
if \{%2\}==\{\} @echo Syntax: SizeFile FileName Size&exit /b 1
if not exist %1 @echo SizeFile: %1 does NOT exist&exit /b 2
setlocal
for /f "Tokens=3" %%a in ('dir %1 /A^|Findstr /i /c:"1 File(S)"') do (
 set p3=%%a
)
set p3=%p3:,=%
endlocal&set/a %2=%p3%
exit /b 0