- if (ShellCommandGetEchoState()) {\r
- CurDir = ShellInfoObject.NewEfiShellProtocol->GetEnv(L"cwd");\r
- if (CurDir != NULL && StrLen(CurDir) > 1) {\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_SHELL_CURDIR), ShellInfoObject.HiiHandle, CurDir);\r
- } else {\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_SHELL_SHELL), ShellInfoObject.HiiHandle);\r
+ if (CommandLine3[0] == L'@') {\r
+ //\r
+ // We need to save the current echo state\r
+ // and disable echo for just this command.\r
+ //\r
+ PreCommandEchoState = ShellCommandGetEchoState();\r
+ ShellCommandSetEchoState(FALSE);\r
+ Status = RunCommand(CommandLine3+1);\r
+\r
+ //\r
+ // Now restore the pre-'@' echo state.\r
+ //\r
+ ShellCommandSetEchoState(PreCommandEchoState);\r
+ } else {\r
+ if (ShellCommandGetEchoState()) {\r
+ CurDir = ShellInfoObject.NewEfiShellProtocol->GetEnv(L"cwd");\r
+ if (CurDir != NULL && StrLen(CurDir) > 1) {\r
+ ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_SHELL_CURDIR), ShellInfoObject.HiiHandle, CurDir);\r
+ } else {\r
+ ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_SHELL_SHELL), ShellInfoObject.HiiHandle);\r
+ }\r
+ ShellPrintEx(-1, -1, L"%s\r\n", CommandLine2);\r