0

ドライブを有効にするには、バッチ ファイルに記述されている net use コマンドを実行する必要があります。バッチファイルは次のとおりです。

net use * /delete /Y
net use l: \\<windows drive name> /user:<domain>\<username> <password>

上記のバッチ ファイルにより、ドライブが有効になり、L: drive to me として表示されます。このバッチ ファイルを Java コードで実行し、いくつかのファイルをこのドライブに書き込む必要があります。

以下のコードを使用して、このバッチ ファイルを実行しています。

String[] array = { "cmd", "/C", "start", "C:/file.bat" };
Runtime.getRuntime().exec(array);

問題は、ドライブにアクセスしてファイルを書き込もうとすると、パスが見つからないという例外が発生することです。走る時もあれば走らない時もあります。

友達は誰でも問題がどこにあるかを理解するのを手伝ってくれます。私が実行している間違ったステップ。質問がはっきりしない場合は、お知らせください。

4

2 に答える 2

2

走る時もあれば走らない時もあります。

これは競合状態のように見えます。Runtime.exec()呼び出し元のアプリケーションが引き続き実行されている間、別のプロセスでコマンドを実行します。ファイルにアクセスしようとしたときに、バッチ ファイルが既に完了しているかどうかは未定義です。

Runtime.exec()Processサブプロセスとの通信に使用できるオブジェクトを返します。あなたの場合、プロセスが完了するまで待つだけで十分です。

Process p = Runtime.getRuntime().exec(array);
p.waitFor();

// Now, your batch file should be completed and you can continue
// ...
于 2013-01-23T08:11:09.470 に答える
2

それが実際のコマンドシェルに当たると、Windowsは「/」を好まないのではないかと思います。代わりに「\」を試してみてください。外部プロセスの実行は少し注意が必要です。Apache Commons Exec プロジェクトを参考にしてください。

于 2013-01-23T08:11:24.527 に答える