'Strange behavior when running start.bat file in Windows 2019 Core

I have a start.bat which does nothing but

@echo off
Echo "Hello World"

Then I open a cmd window and type in

start "" /D D:\Test start.bat

it opens a new cmd window with "Hello World", but does not close the window automatically.

Now I created another bat file named start2.bat which has the same content as the start.bat above. Then I type in

start "" /D D:\Test start2.bat

it opens a new cmd window with "Hello World", and does close the window automatically.

Why is it happening ???

I try to use some trace tool to analyse, from the tool, it seems like my system turn start "" /D D:\Test start.bat to cmd.exe /K start.bat TraceTool

Tried in another computer, now, no matter which file name I used, it turns into cmd/exe /K start.bat start3.bat


Update:

Turns out adding /C does not work for me, attach process tree below, the system still changes /C to /K

Process tree view with /C


Update:

Provide full process view. My start.bat is exactly the same as above And now I open a cmd.exe window, and typed in

"c:\windows\system32\cmd.exe" /C START "test" /D "C:\test" start.bat or just cmd /C START "test" /D "C:\test" start.bat

And

"c:\windows\system32\cmd.exe" /C START "test" /D "C:\test" start2.bat or just cmd /C START "test" /D "C:\test" start2.bat

From the process tree view, it can be seen that the first command turns into

C:\windows\system32\cmd.exe /K start.bat

While the second command turns into C:\windows\system32\cmd.exe /c "c:\test\start2.bat" "

cmd.exe

Full Process Tree View



Solution 1:[1]

From the usage information of the start command (excerpt from the description of the command/program argument):

[...]
    command/program
                If it is an internal cmd command or a batch file then
                the command processor is run with the /K switch to cmd.exe.
                This means that the window will remain after the command
                has been run.

                If it is not an internal cmd command or batch file then
                it is a program and will run as either a windowed application
                or a console application.
[...]

Hence when starting an internal command or a batch file, cmd.exe together with its /K option is used, so start "" "script.bat" is equivalent to:

start "" cmd.exe /K "script.bat"

If you want the new console window to become closed, use this instead:

start "" cmd.exe /C "script.bat"

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 aschipfl