1

为什么

ProcessBuilder pb = new ProcessBuilder("cmd","/C","dir");

工作但

ProcessBuilder pb = new ProcessBuilder("cmd","dir");

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

4

2 回答 2

5

这是正常的行为cmd.exe- 在命令行上也会发生同样的情况:

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

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

/C      Carries out the command specified by string and then terminates
于 2013-03-08T09:39:01.090 回答
3

因为cmd.exe那样工作。在命令窗口中试试这个:

cmd dir

cmd /C dir

也看看help cmd解释。

于 2013-03-08T09:41:38.663 回答