ProcessBuilder和cmd

Jim*_*Jim 1 java cmd processbuilder

为什么

ProcessBuilder pb = new ProcessBuilder("cmd","/C","dir");
Run Code Online (Sandbox Code Playgroud)

工作但是

ProcessBuilder pb = new ProcessBuilder("cmd","dir");
Run Code Online (Sandbox Code Playgroud)

才不是。
我的意思是在后一种情况下cmd启动但目录列表没有发生,这是为什么?

And*_*ter 5

这是正常的行为cmd.exe-在命令行上也是如此:

C:\>cmd dir
Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation.  All rights reserved.
Run Code Online (Sandbox Code Playgroud)
C:\>cmd /c dir
 Volume in drive C is System
 Volume Serial Number is ABCD-EF10
...
Run Code Online (Sandbox Code Playgroud)

第一次调用时,您正在创建一个新的(交互式)命令解释器过程cmd.exe。在第二个调用中,您将创建一个新的命令解释器进程,并告诉它执行给定的命令,然后退出:

/C      Carries out the command specified by string and then terminates
Run Code Online (Sandbox Code Playgroud)