diff --git a/Lib/subprocess.py b/Lib/subprocess.py
index 760b2a9..ae033d4 100644
--- a/Lib/subprocess.py
+++ b/Lib/subprocess.py
@@ -853,7 +853,7 @@
                 startupinfo.dwFlags |= _subprocess.STARTF_USESHOWWINDOW
                 startupinfo.wShowWindow = _subprocess.SW_HIDE
                 comspec = os.environ.get("COMSPEC", "cmd.exe")
-                args = comspec + " /c " + '"%s"' % args
+                args = comspec + " /c " + args
                 if (_subprocess.GetVersion() >= 0x80000000 or
                         os.path.basename(comspec).lower() == "command.com"):
                     # Win9x, or using command.com on NT. We need to
diff --git a/Lib/test/test_subprocess.py b/Lib/test/test_subprocess.py
index c4bef9e..95da107 100644
--- a/Lib/test/test_subprocess.py
+++ b/Lib/test/test_subprocess.py
@@ -1015,7 +1015,6 @@
         self._kill_process('terminate')
 
 
-
 # The module says:
 #   "NB This only works (and is only relevant) for UNIX."
 #
@@ -1042,46 +1041,6 @@
             if dir is not None:
                 os.rmdir(dir)
 
-class CommandsWithSpaces (BaseTestCase):
-
-    def setUp(self):
-        super().setUp()
-        f, fname = mkstemp(".py", "te st")
-        self.fname = fname.lower ()
-        os.write(f, b"import sys;"
-                    b"sys.stdout.write('%d %s' % (len(sys.argv), [a.lower () for a in sys.argv]))"
-        )
-        os.close(f)
-
-    def tearDown(self):
-        os.remove(self.fname)
-        super().tearDown()
-
-    def with_spaces(self, *args, **kwargs):
-        kwargs['stdout'] = subprocess.PIPE
-        p = subprocess.Popen(*args, **kwargs)
-        self.assertEqual(
-          p.stdout.read ().decode("mbcs"),
-          "2 [%r, 'ab cd']" % self.fname
-        )
-
-    def test_shell_string_with_spaces(self):
-        # call() function with string argument with spaces on Windows
-        self.with_spaces('"%s" "%s"' % (self.fname, "ab cd"), shell=1)
-
-    def test_shell_sequence_with_spaces(self):
-        # call() function with sequence argument with spaces on Windows
-        self.with_spaces([self.fname, "ab cd"], shell=1)
-
-    def test_noshell_string_with_spaces(self):
-        # call() function with string argument with spaces on Windows
-        self.with_spaces('"%s" "%s" "%s"' % (sys.executable, self.fname,
-                             "ab cd"))
-
-    def test_noshell_sequence_with_spaces(self):
-        # call() function with sequence argument with spaces on Windows
-        self.with_spaces([sys.executable, self.fname, "ab cd"])
-
 
 @unittest.skipUnless(getattr(subprocess, '_has_poll', False),
                      "poll system call not supported")
@@ -1134,7 +1093,6 @@
                   Win32ProcessTestCase,
                   ProcessTestCasePOSIXPurePython,
                   CommandTests,
-                  CommandsWithSpaces,
                   ProcessTestCaseNoPoll,
                   HelperFunctionTests)
 
