Better way to fix 868.  Check the last error instead of checking before hand.  Thanks to billgMS for point this out.
Modified: trunk/reactos/subsys/system/cmd/En.rc
Modified: trunk/reactos/subsys/system/cmd/internal.c
Modified: trunk/reactos/subsys/system/cmd/resource.h

Modified: trunk/reactos/subsys/system/cmd/En.rc
--- trunk/reactos/subsys/system/cmd/En.rc	2005-10-04 14:56:38 UTC (rev 18266)
+++ trunk/reactos/subsys/system/cmd/En.rc	2005-10-04 15:32:04 UTC (rev 18267)
@@ -571,7 +571,8 @@
 STRING_CHOICE_ERROR,         "Invalid option. Expected format: /C[:]options"
 STRING_CHOICE_ERROR_TXT,     "Invalid option. Expected format: /T[:]c,nn"
 STRING_CHOICE_ERROR_OPTION,  "Illegal Option: %s"
-STRING_MD_ERROR,			 "A subdirectory or file ass already exists.\n"
+STRING_MD_ERROR,			 "A subdirectory or file already exists.\n"
+STRING_MD_ERROR2,			 "The path to the new folder does not exist.\n"
 STRING_CMD_ERROR1,           "Can't redirect input from file %s\n"
 STRING_CMD_ERROR2,           "Error creating temporary file for pipe data\n"
 STRING_CMD_ERROR3,           "Can't redirect to file %s\n"

Modified: trunk/reactos/subsys/system/cmd/internal.c
--- trunk/reactos/subsys/system/cmd/internal.c	2005-10-04 14:56:38 UTC (rev 18266)
+++ trunk/reactos/subsys/system/cmd/internal.c	2005-10-04 15:32:04 UTC (rev 18267)
@@ -472,6 +472,9 @@
 	if (!dir)
 	{
 		ConErrResPuts (STRING_ERROR_REQ_PARAM_MISSING);
+		nErrorLevel = 1;
+		if(p != NULL)
+			freep (p);
 		return 1;
 	}
 
@@ -479,16 +482,20 @@
 	if (_tcslen (dir) >= 2 && dir[_tcslen (dir) - 1] == _T('\\'))
 		dir[_tcslen(dir) - 1] = _T('\0');
 
-	if(IsExistingDirectory(dir) || IsExistingFile(dir))
-	{
-		ConErrResPuts(STRING_MD_ERROR);
-		freep(p);
-		nErrorLevel = 1;
-		return 1;
-	}
 	if (!CreateDirectory (dir, NULL))
 	{
-		ErrorMessage (GetLastError(), _T("MD"));
+		if(GetLastError() == ERROR_ALREADY_EXISTS)
+		{
+			ConErrResPuts(STRING_MD_ERROR);
+		}
+		else if(GetLastError() == ERROR_PATH_NOT_FOUND)
+		{
+			ConErrResPuts(STRING_MD_ERROR2);
+		}
+		else
+		{
+			ErrorMessage (GetLastError(), _T("MD"));
+		}
 		nErrorLevel = 1;
 		freep (p);
 		return 1;

Modified: trunk/reactos/subsys/system/cmd/resource.h
--- trunk/reactos/subsys/system/cmd/resource.h	2005-10-04 14:56:38 UTC (rev 18266)
+++ trunk/reactos/subsys/system/cmd/resource.h	2005-10-04 15:32:04 UTC (rev 18267)
@@ -221,6 +221,7 @@
 #define STRING_SYNTAX_COMMAND_INCORRECT    723
 #define STRING_RMDIR_HELP2				   724
 #define STRING_MD_ERROR					   725
+#define STRING_MD_ERROR2					   726
 
 
 /* These strings are language independent (cmd.rc) */