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]