为什么
ProcessBuilder pb = new ProcessBuilder("cmd","/C","dir");
工作但
ProcessBuilder pb = new ProcessBuilder("cmd","dir");
才不是。
我的意思是在后一种情况下 cmd 启动但目录列表没有发生。为什么会这样?
为什么
ProcessBuilder pb = new ProcessBuilder("cmd","/C","dir");
工作但
ProcessBuilder pb = new ProcessBuilder("cmd","dir");
才不是。
我的意思是在后一种情况下 cmd 启动但目录列表没有发生。为什么会这样?
这是正常的行为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
因为cmd.exe
那样工作。在命令窗口中试试这个:
cmd dir
和
cmd /C dir
也看看help cmd
解释。