IF EXISTS Command Exhibits Different Behavior on HPFS (97841)



This article was previously published under Q97841

SUMMARY

Testing for the existence of a remote drive or directory via the IF EXISTS drive:\nul command exhibits different behavior on an HPFS partition than it does on a FAT partition. On an HPFS system, the IF EXISTS command always returns FALSE when testing for the NUL device.

SYMPTOMS

      exist.bat

      if exist %1\NUL goto dir_ok
      echo %1 doesn't exist
      goto end
      :dir_ok
      echo %1 exists

   Usage:

      exist P:
      exist P:\dirname\dir
The code returns "P: doesn't exist," but if P is an HPFS partition linked to a sharename on a FAT partition, then the code returns "P: exists." If you substitute the local hard drive for P, then the command works as expected.

FAT and HPFS partitions respond differently to the IF EXISTS NUL from an MS-DOS workstation, but not if you copy EXIST.BAT to EXIST.CMD and run it from both types of partitions while at the server.

CAUSE

This behavior exists because of design differences in the two file systems. In the FAT file system, the NUL device is one associated with each partition, as well as each directory on that partition. On an HPFS partition, however, the NUL device does not live as part of the file system on the disk, and as such cannot be tested for via the IF EXISTS from a remote client. Nevertheless, the device does exist, and behaves identically to the implementation on FAT.

RESOLUTION

The following batch file shows an alternative way to test for the existence of a remote drive/directory:
      copy c:\config.sys %1\$$$$$.tst
      if exists %1\$$$$$.txt goto dir_there
      echo %1 does not exist!
      goto done
      :dir_there
      echo %1 does exist!
      :done
Also, using the LAN Manager PTK, it is possible to programatically test for the existence of a remote drive/directory.

Modification Type: Major Last Reviewed: 7/30/2001
Keywords: KB97841