dd for windowsLinux LOGO

version 0.3

written by John Newbigin

dd - convert and copy a file

This version does not actually do any conversion but it allows the flexible copying of data under in a win32 environment. At the moment block devices under Win9x are not supported but that will be added soon.

Read more about dd in the Wikipedia


dd [bs=SIZE[SUFFIX]] [count=BLOCKS] if=FILE of=FILE [seek=BLOCKS] [skip=BLOCKS] [--list] [--progress]

The block size can be specified in bytes or with one of the following suffix

Double Wordsd4
Quad Wordsq8

The default block size is 512 bytes which will work for most files and devices but the copy will be a lot faster if you use a larger block size. For example a floppy disk read with bs=1k count=1440 takes almost twice as long than if you use bs=1440k count=1. Don't make the block size too large because windows will run out of memory. 1M is probably a good size and upper limit. 1G works but is slow because windows end up swapping. Most CD-ROM have 2k sector size and probably will not work with 512 bytes.

skip is the distance to skip over the input file before reading is commenced. It is in blocks so the distance will be skip * blocksize.

seek is the distance to skip over in the output file before writing is commenced. It is also in blocks do the distance will be seek * blocksize.

If you don't specify a count then the dd will continue until the end of device is reached.

Using --list

Windows provides a number of ways to name a device. The --list will output the preferred names. Under NT4, only the \\?\Device\Harddisk<n>\Partition<n> method is available. Partition0 is the entire disk. Under Windows XP, some partitions may not have a Volume device. In this case you can still use the Harddisk\Partition name.

Windows 2000 and later have Volume devices which are unique GUIDs which identify a disk or partition (what MS call a Volume). These are listed along with any mount point that they may be mounted on. Most of the time this is a drive letter but it may be a path on another filesystem. If you want to read the underlying device, do not include the trailing \ character. If the volume is not mounted there is no easy way to identify it so be careful.

Sample output

dd --list rawwrite dd for windows version 0.4beta1. Written by John Newbigin <jn@it.swin.edu.au> This program is covered by the GPL. See copying.txt for details Win32 Available Volume Information \\.\Volume{5cd94d2c-3251-11d9-9444-806d6172696f}\ link to \\?\Device\HarddiskVolume1 fixed media Mounted on \\.\c: \\.\Volume{129b1243-3252-11d9-b167-806d6172696f}\ link to \\?\Device\CdRom0 CD-ROM Mounted on \\.\r: \\.\Volume{129b1242-3252-11d9-b167-806d6172696f}\ link to \\?\Device\Floppy0 removeable media Mounted on \\.\a: \\.\Volume{e3429891-0eb9-11da-b18f-000d60dc98cd}\ link to \\?\Device\Harddisk1\DP(1)0-0+3 removeable media Mounted on \\.\d: NT Block Device Objects \\?\Device\CdRom0 \\?\Device\Floppy0 \\?\Device\Harddisk0\Partition0 link to \\?\Device\Harddisk0\DR0 Fixed hard disk media. Block size = 512 \\?\Device\Harddisk0\Partition1 link to \\?\Device\HarddiskVolume1 \\?\Device\Harddisk1\Partition0 link to \\?\Device\Harddisk1\DR2 Removable media other than floppy. Block size = 512 \\?\Device\Harddisk1\Partition1 link to \\?\Device\Harddisk1\DP(1)0-0+3 Removable media other than floppy. Block size = 512 Virtual devices /dev/zero /dev/random

Using --progress

--progress is an non-standard enchancement to dd which will show you progess as each block is copied.

Virual devices

Virtual devices are a new feature in version 0.4beta1.

Because windows does not have devices like the unix /dev/zero or /dev/random these have been implemented inside dd. You can use these as input files to supply an infinate amount of zeros or psudo random data.


Make an image of a floppy disk:

dd if=\\.\a: of=c:\temp\disk1.img bs=1440k

Write the image back to a floppy disk:

dd if=c:\temp\disk1.img of=\\.\a: bs=1440k

Rip an .iso from a CD

dd if=\\?\Device\CdRom0 of=c:\temp\disc1.iso bs=1M

Read a USB memory device

dd if=\\.\Volume{c18588c0-02e9-11d8-853f-00902758442b} of=c:\temp\usb1.img bs=1M

You can write to any file or block device which windows will allow you to write to. You can use the standard \\.\ notation for win32 exported devices or the dd specific \\?\ notation to access windows native devices.

Note: You can not write to a CD with this program. Get microsoft cdburn from the resource kip.

Note: Floppy disks are crap. If you get errors, please try another floppy disk or reformatting the disk.

License & Copyright

dd is copyright by me John Newbigin. It is made available under the terms of the GPL. Other licensing is available on request. For more info just email me.


Version 0.4beta1


source .zip Delphi 5 N/A
binary .exe Windows dd-0.4beta1.exe

Version 0.3


source .zip Delphi 5 dd-0.3.src.zip
binary .zip Windows dd-0.3.zip

Alternate versions

This is a list of other dd tools for windows from other projects:

This is a list of other dd tools for linux/unix: