I use XP SP3 too and ('dir /b /s /a-d') worked fine. I don't know why it didn't work for you. One thing - if you scan a whole drive there may be a long time when nothing seems to be happening.
zerodel.bat
@echo off
.....
for /f "delims==" %%A in ('dir /a /b /s /a-d') do (
if "%%~zA"=="0" (
set /a file+=1
echo [!file!] 0 bytes "%%~dpnxA"
echo del "%%~dpnxA" >>"%temp%\deletions.bat"
)
)
.....
The above method delete files one by one. Not that its really a big deal, but a suggestion for a more efficient way, since del can delete multiple files passed to it on the command line, is to concat all the filenames into one string, either by batches (or as many as del can take as input) and then pass it to del.