8

As far as I can tell, chkdsk as been part of DOS and Windows since day one. However, in later versions of DOS, chkdsk was shipped along side scandisk. As of Windows 98, running chkdsk will result in the program printing a recommendation for scandisk instead.

In later versions of Windows (such as XP), scandisk had disappeared entirely, having been replaced by chkdsk.

That said, why did Microsoft originally make scandisk (and why did they scrap it)? Did scandisk do something that chkdsk couldn't do? The Windows 98 version of chkdsk says "SCANDISK can reliably detect and fix a much wider range of disk problems." Was this true? If so, what additional problems could scandisk fix?

  • 7
    With respect to Windows XP: XP is a descendent of Windows NT and not of DOS-Windows; it therefore uses NT's chkdsk and not DOS's chkdsk. Windows 98 and ME were the end of the line for DOS-Windows. – another-dave Jun 8 at 1:34
13

There are quite a few differences between the MS-DOS CHKDSK and ScanDisk, beyond the latter’s friendlier interface.

  • ScanDisk can “repair” cross-linked files, i.e. files which end up pointing (entirely or partially) at the same cluster chain — this always involves data loss, but it’s better than CHKDSK which would only tell the user about the problem (users then had to copy the files manually and delete the originals).
  • As its name indicates, ScanDisk can scan the disk surface, as well as verify the file system’s integrity; it will repair files stored on bad sectors (as far as it can — the data stored on the unreadable sectors won’t be recovered), and it can also flag sectors which take too long to read (which may indicate they’re about to become unreadable). Sector recovery previously involved using the RECOVER tool.
  • It can repair invalid media descriptors. With CHKDSK, this involved using a disk editor (as documented by Microsoft!).
  • It copes with directories containing more than 32,767 entries, unlike CHKDSK.
  • ScanDisk and CHKDSK deal with attribute corruption somewhat differently. Thus ScanDisk will ignore volume labels with data (which usually indicates that they are really files whose volume attribute has been set incorrectly), whereas CHKDSK treat the corresponding clusters as unlinked and recover the data. Similarly, ScanDisk mis-handles files whose directory attribute has been set, and this is one of the few recovery scenarios where Microsoft recommended using CHKDSK rather than ScanDisk.
  • ScanDisk is customisable, and Microsoft provided a decently-documented configuration file.
  • Last but most certainly not least, ScanDisk can analyse compressed volumes. When DoubleSpace was introduced with MS-DOS 6, CHKDSK wasn’t extended to cope with compressed volumes; instead, it cooperated with the DBLSPACE utility. ScanDisk was introduced with MS-DOS 6.2 and supports compressed volumes directly (DoubleSpace in version 6.2, DriveSpace in version 6.22), and the CHKDSK cooperation was removed.

This begs the question, why not add all those features to CHKDSK? I can think of two reasons:

  • Microsoft wanted to have a “user-friendly” disk checker, matching the new DEFRAG tool (which had been added in MS-DOS 6). But changing the interface of CHKDSK would have broken backwards compatibility... (In particular, CHKDSK wasn’t used only to check the file system; since it reported on available memory, users commonly used it for that purpose, since before MEM appeared in MS-DOS 5, that was the only way to determine that information using DOS-provided tools. There were thus batch files relying on this feature.)
  • CHKDSK was written in assembly language (and you can now see the source code for version 2.0), and I imagine the engineers involved balked at the idea of adding all the features above to an assembly-language program, or at least found it easier to re-write everything in C (which is what ScanDisk was written in).

ScanDisk was never added to the Windows NT line of operating systems, so when that took over the full Windows family (with Windows XP), ScanDisk disappeared. Windows NT had its own, NTFS-capable version of CHKDSK.

8

The (at least original DOS versions of) chkdsk checked the integrity of the FAT filesystem. Say, a reboot occurred interrupting a disk write, chkdsk e.g. could find correspondingly corrupted files and clean up. scandisk, on the other hand, could also perform tests of the physical disk surface by performing read and write operations, and it could identify bad blocks and exclude such blocks from being used for file storage.

1

I remember Scandisk as having appeared around the time of Windows 95. In that era, booting was sufficiently slow that many machines were left on for extended periods of time while unattended, and hard drives would typically spin as long as they had power; reading them would thus not contribute meaningfully to wear. Given these factors, there may have been some benefit to scanning hard drives for errors while a system was idle. If one had multiple copies of a file and one went bad, discovering that could alert one to the need to back up one of the surviving good copies. Microsoft certainly saw such a benefit, since one of scandisk's main functions was to start up when the system was unattended, and stop once the system was in use again.

  • 2
    I don’t remember SCANDISK running when the system was unattended, even under Windows (and it doesn’t on my systems which have it). Defragging screensavers were quite popular, could that be what you’re thinking of? – Stephen Kitt Jun 8 at 18:05
  • 1
    @StephenKitt: Windows 98 certainly had an optional thing built in (the "Maintenance Wizard", which would start it via Task Scheduler): support.microsoft.com/en-ie/help/186186/… – grawity Jun 9 at 7:19
  • @grawity ah yes, that brings back memories, in particular trying to figure out what was causing Defrag to start again from scratch... Could the task scheduler start tasks based on idleness rather than at set times? (I don’t have my Windows 98 machine at hand to check myself...) – Stephen Kitt Jun 9 at 14:25
  • I'm pretty sure scandisk appeared before Windows 95. I might be wrong, but I think it first appeared in MS-DOS 5.0. At that point, it was only a TUI, although Windows 9x also came with a GUI version. – TSJNachos117 Jun 9 at 20:44
  • Also, @StephenKitt when creating a task in Windows 98, in the task's properties, you can go to the "Settings" tab, and set options related to whether the computer is idle. IMHO, there's no way to tell a program "Do this the moment the computer become idle", but you could say "Do this a 3:00 AM if the computer is idle." If desired, you can also tell a task to stop if the computer ceases to be idle. – TSJNachos117 Jun 9 at 21:14

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.