The '98 defrag.exe is rather slow even when it does work. Better to download newdefrag.zip which is the Windows ME defrag and which runs much faster.
Rename the defrag.exe you have now to defrag.old and unzip the ME defrag into the same folder.
Use CCLeaner to remove old files from your system so that you are no defragmenting junk files and see if the new defrag.exe runs.
If not you can boot into safe mode and run both ScanDisk and Defrag.
You can also use Diskeeper Lite which does a much better job and shows you your entire drive on one screen.
DISKEEPER LITEYou should always maintain 15% free-space on all drives for defrag to run.
NEWDEFRAG.ZIP