Index: lib/rubygems/commands/mirror_command.rb
===================================================================
--- lib/rubygems/commands/mirror_command.rb	(revision 1559)
+++ lib/rubygems/commands/mirror_command.rb	(working copy)
@@ -60,7 +60,13 @@
       if get_from.scheme.nil? then
         get_from = get_from.to_s
       elsif get_from.scheme == 'file' then
-        get_from = get_from.to_s[5..-1]
+        # check if specified URI contains a drive letter (file:/D:/Temp)
+        get_from = get_from.to_s
+        if get_from.match(/[a-z]:/i)
+          get_from = get_from[6..-1]
+        else
+          get_from = get_from[5..-1]
+        end
       end
 
       open File.join(get_from.to_s, "Marshal.#{Gem.marshal_version}.Z"), "rb" do |y|
Index: test/test_gem_commands_mirror_command.rb
===================================================================
--- test/test_gem_commands_mirror_command.rb	(revision 1559)
+++ test/test_gem_commands_mirror_command.rb	(working copy)
@@ -34,7 +34,12 @@
 
     File.open File.join(Gem.user_home, '.gemmirrorrc'), 'w' do |fp|
       fp.puts "---"
-      fp.puts "- from: file://#{@tempdir}"
+      # tempdir could be a drive+path (under windows)
+      if @tempdir.match(/[a-z]:/i)
+        fp.puts "- from: file:///#{@tempdir}"
+      else
+        fp.puts "- from: file://#{@tempdir}"
+      end
       fp.puts "  to: #{mirror}"
     end
 
