From: Haidong Yu yuhaidong@uniontech.com
For example, calling start.bat.
Signed-off-by: Haidong Yu yuhaidong@uniontech.com --- programs/cmd/wcmdmain.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-)
diff --git a/programs/cmd/wcmdmain.c b/programs/cmd/wcmdmain.c index 1867c5afb92..99bdcfe12f7 100644 --- a/programs/cmd/wcmdmain.c +++ b/programs/cmd/wcmdmain.c @@ -1325,9 +1325,17 @@ void WCMD_execute (const WCHAR *command, const WCHAR *redirects, while (IsCharAlphaNumericW(whichcmd[count])) { count++; } - for (i=0; i<=WCMD_EXIT; i++) { - if (CompareStringW(LOCALE_USER_DEFAULT, NORM_IGNORECASE | SORT_STRINGSORT, - whichcmd, count, inbuilt[i], -1) == CSTR_EQUAL) break; + if (wcsnicmp(&whichcmd[count], L".bat", 4)) + { + for (i=0; i<=WCMD_EXIT; i++) { + if (CompareStringW(LOCALE_USER_DEFAULT, NORM_IGNORECASE | SORT_STRINGSORT, + whichcmd, count, inbuilt[i], -1) == CSTR_EQUAL) break; + } + } + else + { + i=WCMD_CALL; + count = 0; } cmd_index = i; parms_start = WCMD_skip_leading_spaces (&whichcmd[count]);