In windows 7 we now have the ability to create and attach VHD files as drives. Does anyone know how we can compact the dynamic disks from within windows 7?

  • Did you try the disk manager? Commented May 29, 2009 at 17:17
  • I poked around in disk manager, didn't find anything in there.
    – Scott Ivey
    Commented May 29, 2009 at 18:09

7 Answers 7


You can compact a VHD in Windows 7 using diskpart.exe's COMPACT option. Also, if you don't mind a little coding, you can call the CompactVirtualDisk API (I'd post a link to it, but new users can't post hyperlinks - just search MSDN for it if you're interested).

  • 4
    aweseme - thank you! To add to this, you have to attach it read only. commands are: select vdisk file="C:\MyVhd.vhd", attach vdisk readonly, compact vdisk
    – Scott Ivey
    Commented May 31, 2009 at 16:15
  • 1
    @scott - Followed by detach vdisk
    – Greg
    Commented Jan 25, 2010 at 19:02
  • Is it possible to achieve this via one-line command?
    – Suncatcher
    Commented Dec 5, 2017 at 20:46

Using the diskpart command line utility in Windows 7 to compact a VHD file. It works great!

alt text


when in diskpart console type "select vdisk file="c:\windows7.vhd" then press enter then type "compact", that should compact your virtual drive.

  • 1
    that's "compact vdisk" just compact will get the help line for the command. Commented Feb 27, 2010 at 15:43

To Compact a VHD file in Windows Virtual PC (in Windows 7): -Open "Windows Virtual Machines" shell -Right-click on the VM you want to compact and open its Settings - Go to "Hard Disk 1" or anyone you have the VHD file attached to. - Click on Modify, then Compact Virtual Hard Disk


How about VHD Resizer?

  • 1
    From what i've seen - VHD Resizer will expand files or shrink files, but will not compact files while leaving their original max size intact.
    – Scott Ivey
    Commented May 29, 2009 at 18:12
  • Well that's disappointing, I had that filed away to take a look at later on for just this purpose. Thanks for the heads up. Commented May 29, 2009 at 18:42

What I ended up doing was to detach the VHD from within Disk Manager, and then i attached the file to my "Virtual Windows XP" in Windows 7. Once that was done, i was able to choose "Modify" on the disk, and then "Compact."

Once the compact was done, i removed the VHD's from the "Virtual Windows XP" VM - and then can use them as needed from there.

This seems like a kludgy solution - i was hoping someone would have a way to run the compact without having to attach them to the VM first, or better yet a way to run it thru power shell or script.



  1. Open your Windows command line (CMD).
  2. diskpart
  3. select vdisk file="X:\xyz.vhd"
  4. attach vdisk readonly
  5. compact vdisk
  6. detach vdisk
  7. exit

I am using a virtual hard disk including bitlocker. To compress a VDH file with bitlocker, following steps worked for me:

  1. Open Windows disk management.
  2. Append new virtual disk and choose read only mode.
  3. Unlock your new Windows drive with bitlocker.
  4. Open your Windows command line (CMD)
  5. diskpart
  6. select vdisk file="X:\xyz.vhd"
  7. compact vdisk
  8. detach vdisk
  9. exit

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .