Jump back to the top page Jump back to the top page
 

 Home
 What is XXCOPY ?
 Products
 Downloads
 F A Q 
 Order
 Support
 About Us (Pixelab) 
On-Line Manual 
XXTB #001 
XXTB #002 
XXTB #003 
XXTB #004 
XXTB #005 
             . . .  


XXCOPY
Version
3.33.3


Released
2016-10-28
©2016 Copyright
Pixelab

 All rights reserved  
    [ Table of Contents ] [ Show as Detached ] [ >> ]

    XXCOPY TECHNICAL BULLETIN #008

    From:    Kan Yabumoto           tech@xxcopy.com
    To:      XXCOPY user
    Subject: Short names made by Win95/98 and by WinNT/2K/XP
    Date:    2003-10-14 (Revised)
    ===============================================================================
    
    In our earlier article, XXTB #03, we discussed the subtle problem
    of long and short filenames commonly encountered by Windows users.
    The problem has been widely known and various solutions have been
    devised to handle most such cases.  XXCOPY can handle such cases
    correctly in most cases.
    
    Unfortunately, when you mix the two types of OS in operation, one
    more potential problem may arise.
    
    
    About the various Windows OS.
    
       Although all Windows operating systems except early ones (Win 3.x)
       support long filenames, there is a subtle difference in the
       algorithm of alias synthesis by the various OSes.  The difference
       may adversely affect XXCOPY's effort in preserving the short
       filename.
    
       First, let us examine the difference.  Windows 95 and 98 use a
       straightforward scheme in picking up the short name alias, whereas
       Windows NT4, 2000 and XP add a little twist in the way the numeric
       tail is generated.
    
       It is easy for anyone to observe the filename related idiosyncrasies.
       Just pick a file and repeatedly copy it in a directory under a series
       of long names having the same beginning.  For example:
    
            mkdir c:\temp
            copy  c:\autoexec.bat   c:\temp\mylongname1
            copy  c:\autoexec.bat   c:\temp\mylongname2
            copy  c:\autoexec.bat   c:\temp\mylongname3
            copy  c:\autoexec.bat   c:\temp\mylongname4
            copy  c:\autoexec.bat   c:\temp\mylongname5
            copy  c:\autoexec.bat   c:\temp\mylongname6
            copy  c:\autoexec.bat   c:\temp\mylongname7
            copy  c:\autoexec.bat   c:\temp\mylongname8
            copy  c:\autoexec.bat   c:\temp\mylongname9
    
       Then, using an appropriate tool, examine the destination directory.
       The following table shows the result of the copy operations in
       Windows 95/98 and the Windows NT/2000/XP variations.
    
            Longname         Windows 95/98/ME  Windows NT4/2K/XP
           ----------------------------------------------------------
            mylongname1          MYLONG~1          MYLONG~1
            mylongname2          MYLONG~2          MYLONG~2
            mylongname3          MYLONG~3          MYLONG~3
            mylongname4          MYLONG~4          MYLONG~4
            mylongname5          MYLONG~5          MYA476~1
            mylongname6          MYLONG~6          MYA486~1
            mylongname7          MYLONG~7          MYA496~1
            mylongname8          MYLONG~8          MYA4A6~1
            mylongname9          MYLONG~9          MYA4B6~1
    
       Whereas the Win9x OSes use a simple decimal number in the numeric
       tail, the WinNT family OSes follow the same pattern only in the
       first four cases.  After that, they start using a 4-digit
       hexadecimal number in the middle of the 8.3 name as the
       distinguishing part (only the first two letters remains the same).
    
       The hexadecimal value is probably a hash value for the string to
       supposedly shorten the filename matching operation which could be
       very time consuming.  Microsoft programmers chose to keep the first
       four match done numerically for the sake of compatibility to the
       Win9X systems.  What they failed to realize is that they allowed
       only the first four such names for compatibility.
    
    
    The adverse effect of the two alias algorithms.
    
       As long as you use XXCOPY in a homogeneous environment where
       the files are generated under one OS, XXCOPY can preserve the
       short name.  But, when you have a mixed environment (e.g., with a
       dual-boot system), you may copy a directory with many similar
       names which were created under one OS and then perform a directory
       copy operation using XXCOPY under the other OS, XXCOPY may not be
       able to preserve the short name.
    
       One consolation is that the great majority of files will receive
       the correct short name alias using XXCOPY since the numeric tail of
       the first four aliases in a directory are common in all Windows OSes.
       Therefore the problem should be quite rare.  Ironically, if your
       system has many Microsoft software packages, you will find quite
       a few directories which all start like:
    
         "\Program Files\Microsoft xxxxx"
    
       One can argue that exactly because it is so rare, this phenomenon
       would not be widely known.  Therefore, when the rare problem occurs,
       it will take many agonizing hours for the user to discover the
       cause of the problem.
    
    
    Then, what happens with XXCOPY?
    
       Since XXCOPY does not access the raw directory contents in the
       process of preserving the short name alias, its magic does not work
       all the time.  We cannot do much about this problem without making
       the XXCOPY utility breaking the rules of good programming practice.
       At least we can list the situations where the potential problem may
       arise and how you can avoid it.
    
       1.  Stay within the 8.3 naming convention if possible.
       2.  Stay away from a dual-boot system if possible.
       3.  If you have a dual-boot system and you switch the OS from
           time to time, make sure a directory is written exclusively
           under one OS if possible.
       4.  Finally, when you have to copy a directory, use XXCOPY and
           perform the copy operation under the same OS in which the
           files in the directory were created.
       5.  In a networked environment with different types of OS between
           the source and the destination directories, expect the worst.
    
       Note that although it is ideal that when you copy a directory,
       all the files in the destination should be identical to those in
       the source, in most case, it is not the end of the world.  As a
       matter of fact, in most cases, the discrepancies in short names
       do not cause any problem.  As long as the files and directories
       that are affected by this problem is "non-system" files, the
       problem would be benign if present at all.
    
       In the case of Windows 95/98, the most well documented problem
       which are associated with the unmatched short name is a few
       directory and filenames which are stored in their short name
       alias in a few critical cases in the system registry.  Since
       Windows 95/98 references these files at the system initialization
       time (locating and loading VxD files using short names), the
       difference would be life and death (that is, success and failure
       in system initialization).
    
    
    A final advice with XXCOPY:
    
       If you have a large number of collided aliases (where the short
       name distinctions are made by the synthesized numeric tail only),
       and you are copying across OSes (from Win95/98 to WinNT/2000/XP
       or vice versa), we suggest you turn off XXCOPY's short name
       preservation switch by /NX0 in order to avoid the time consuming
       and futile effort by XXCOPY.
    
    
    
    
    [ Table of Contents ] [ Show as Detached ] [ >> ]