CdCopy: Windows utility for copying contents of a CD/DVD to local hard disk with most free space to a directory named for full name of CD/DVD.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110  | """
CdCopy: Windows utility for copying contents of a CD/DVD to local hard disk with
most free space to a directory named for full name of CD/DVD.
It would be convenient to drag and drop a CD/DVD icon onto a local hard drive and 
have the Windows GUI create a directory of the same full name as the CD/DVD
then copy CD/DVD contents to that directory. 
Unfortunately Windows does not allow this. 
This small stand-alone utility will extract the name of the CD/DVD, determine
the local hard disk with the most available space, create a directory using the
name of the CD/DVD, then write the CD/DVD contents to that directory.
Usage:
* Copy CdCopy.py to any location on your computer.
* Check that global CD_PATH has the correct drive letter for your system 
  or specify CD/DVD path in the command line.
* Insert CD/DVD that you wish to copy.
* Double-click on CdCopy.py
- Console window will provide feedback on copying progress.
- On completion, press RETURN to exit utility.
Notes:
* Windows only.
* CdCopy does not check that there is enough room on destination to copy CD/DVD.
* CdCopy will also work using the command line:
    CdCopy
    CdCopy [CD/DVD drive path]
"""
__author__=["Jack Trainor (jacktrainor@gmail.com)",]
__version__="2010-03-16"
try:
    import sys
    import os, os.path
    import win32api
    import win32file
    
    CD_PATH = "D:\\" # change as appropriate or pass in by command line arg
    
    def mkdir_path(path):
        if not os.access(path, os.F_OK):
            os.makedirs(path)
            
    def get_volume_paths():
        paths = []
        try:
            drives = win32api.GetLogicalDriveStrings()
            paths = drives.split("\0")
            paths = paths[0:-1] # cut off null string at end
        except Exception, e:
            print "get_volume_paths failed: %s\n" % e
        return paths
    
    def get_free_space(disk):
        free_space = 0
        try:
            free_space_tuple = win32file.GetDiskFreeSpaceEx(disk)
            free_space = free_space_tuple[0]
        except Exception, e:
            pass # ignores failures for inappropriate disks
        return free_space
    
    def get_volume_name(volume_path):
        volume_name = volume_path[0]
        try:
            volume_name = win32api.GetVolumeInformation(volume_path)[0]
        except Exception, e:
            print "get_volume_name failed: %s\n" % e
        return volume_name
    
    def get_volume_with_most_space():
        volume = ""
        free = 0
        volume_paths = get_volume_paths()
        decorated_list = [(get_free_space(path), path) for path in volume_paths]
        if decorated_list:
            decorated_list.sort()
            decorated_list.reverse()
            free, volume = decorated_list[0]
        return volume, free
    
    def copy_cd(cd_path):
        try:
            dest_vol, free_space = get_volume_with_most_space()
            cd_name = get_volume_name(cd_path)
            dest_dir = os.path.join(dest_vol, cd_name) 
            mkdir_path(dest_dir)
            command = "XCOPY %s* \"%s\" /s /i" % (cd_path, dest_dir)
            print command
            os.system(command)
        except Exception, e:
            print "copy_cd failed: %s\n" % e
    
    if __name__ == '__main__':
        print "CdCopy start..."
        if len(sys.argv) > 1:
            cd_path = sys.argv[1]
        else:
            cd_path = CD_PATH
        copy_cd(cd_path)
        print "CdCopy finished."
except Exception, e:
    print "CdCopy failed ... %s" % e
raw_input("Press RETURN...")
 | 
It would be convenient to drag and drop a CD/DVD icon onto a local hard drive and have the Windows GUI create a directory of the same full name as the CD/DVD then copy CD/DVD contents to that directory.
Unfortunately Windows does not allow this.
This small stand-alone utility will extract the name of the CD/DVD, determine the local hard disk with the most available space, create a directory using the name of the CD/DVD, then write the CD/DVD contents to that directory.
Usage:
- Copy CdCopy.py to any location on your computer.
 - Check that global CD_PATH has the correct drive letter for your system or specify CD/DVD path in the command line.
 - Insert CD/DVD that you wish to copy.
 - Double-click on CdCopy.py
 - Console window will provide feedback on copying progress.
 - On completion, press RETURN to exit utility.
 
Notes:
- Windows only.
 - CdCopy does not check that there is enough room on destination to copy CD/DVD.
 CdCopy will also work using the command line:
CdCopy CdCopy [CD/DVD drive path]
Download
Copy to clipboard