Question Locked

Test for zero byte file using a DOS batch file

0 helpful
6 replies
Closed to new repliesThis discussion is closed. It stays readable, but it takes no new replies.

Does anyone know of any DOS commands that checks or test if a file is empty (0 byte)? Is this even possible? I have been searching the internet and I see where others have asked the same question but never received a response.
I would like to test if certain files in a directory are zero bytes in size and if so skip or delete that file.

For example;
If first file is > 0 byte then go to next file
etc

Any help on this will be most appreciated.
Thanks.

6 replies

by bizzo

The bit of code here checks the size of the file "myfile.txt" and returns the length.

for %%a in (myfile.txt) do (
set length=%%~za
)
echo %length%

by jutpro

That was very brilliant of you. Thank you so very much for your response and help.

by tomryannova

What does that do or how does that work? Do you have a link that explains?

set length=%%~za

by tomryannova

found it under 'special parameter syntax'. My book didn't have the 'z' option. Thanks a lot for enlightening me-- very helpful!

by branden

from: C:\>help for

In addition, substitution of FOR variable references has been enhanced.
You can now use the following optional syntax:

%~I - expands %I removing any surrounding quotes (")
%~fI - expands %I to a fully qualified path name
%~dI - expands %I to a drive letter only
%~pI - expands %I to a path only
%~nI - expands %I to a file name only
%~xI - expands %I to a file extension only
%~sI - expanded path contains short names only
%~aI - expands %I to file attributes of file
%~tI - expands %I to date/time of file
%~zI - expands %I to size of file
%~$PATH:I - searches the directories listed in the PATH
environment variable and expands %I to the
fully qualified name of the first one found.
If the environment variable name is not
defined or the file is not found by the
search, then this modifier expands to the
empty string

The modifiers can be combined to get compound results:

%~dpI - expands %I to a drive letter and path only
%~nxI - expands %I to a file name and extension only
%~fsI - expands %I to a full path name with short names only
%~dp$PATH:I - searches the directories listed in the PATH
environment variable for %I and expands to the
drive letter and path of the first one found.
%~ftzaI - expands %I to a DIR like output line

In the above examples %I and PATH can be replaced by other valid
values. The %~ syntax is terminated by a valid FOR variable name.
Picking upper case variable names like %I makes it more readable and
avoids confusion with the modifiers, which are not case sensitive.

This discussion is closed to new replies.