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。2番目の呼び出しでは、新しいコマンドインタープリタープロセスを作成し、指定されたコマンドを実行して終了するように指示します。

/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 に答える