0

コマンド ラインから次のコマンドを実行すると、リモート ユーザーとして 7-zip を実行し、ネットワーク共有にファイルを抽出できます。

C:\PsExec.exe -u username -p password "C:\7z.exe" x -y -o\\network\extractedfiles\ C:\compressed.zip toextract.txt

この生成された行を、アプリケーションが実行しているのとまったく同じように実行しています (オンラインに投稿できるように、ディレクトリ、パス、ユーザー名、およびパスワードを変更したことに注意してください)。実際、この行はアプリケーションのログからコピーされたものです。

しかし、何らかの理由で、次のコードを使用して Java からこのコマンドを実行すると、ずっと待機します。「\network\extractedfiles\」パスにファイルが表示されません。

final Process copyFile = Runtime.getRuntime().exec( cmd );
final int exit = copyFile.waitFor();

cmd は上記の文字列です。何か案は?

詳細情報 1:

また、これをコマンド ラインで実行すると、psexec が別のコマンド ウィンドウで z-zip を起動することに気付きました。問題は、zip からの出力が破棄されていないことでしょうか? 入力ストリームを閉じようとしましたが、直面している問題は解決していないようです。

詳細情報 2:

コマンドからの出力をログアウトしようとしましたが、得られたものは次のとおりです。

INFO 2012-05-03 15:07:55,188 - Command output: PsExec v1.98 - Execute processes remotely
INFO 2012-05-03 15:07:55,188 - Command output: Copyright (C) 2001-2010 Mark Russinovich
INFO 2012-05-03 15:07:55,188 - Command output: Sysinternals - www.sysinternals.com
INFO 2012-05-03 15:07:55,188 - Command output: 

それからそれは永遠に座ります。コマンドラインで実行すると、出力の次の行は次のようになりました。

C:\7z.exe exited with error code 0.

そのため、7-zip がぶら下がっているようです。ただし、ファイルの抽出は開始されません-ファイルが抽出されると予想されるディレクトリを確認すると、何も表示されません。

詳細情報 3:

ionic.zip.dll を使用して、.net で独自の unzipper を作成しました。私の unzipper は本当にシンプルでした。コマンド ラインからパラメータを受け入れ、何も出力しませんでした。しかし、それでもまったく同じことを行いました-解凍が開始されず、実行がハングします。たぶん psexec は何か奇妙なことをしていますか??? psexec が外部コマンド コンソールで unzipper を実行しようとしているという事実は、Java に問題を引き起こしますか?

4

2 に答える 2

0

アップデートとして; C# .net を使用して独自の unzipper、psexec、さらには独自のコマンド ライン ラッパーを作成しようとしました (アプリケーション全体を作り直す必要はありませんでした)。どちらのカスタム アプリケーションにも出力はなく、実行中のコマンドは機能しました。毎回、外部ユーザーとして実行されているコマンド ウィンドウから。ただし、Java からは、1 回は機能し、2 回目は unzipper がフリーズし、二度と機能しませんでした。ウイルス対策またはファイアウォールの問題のようです。残念ながら、今は私の手に負えません。ここの IT 部門が現在、これを実行するために私たちを支援しており、私は彼らからの応答を待っています.

于 2012-05-08T23:46:36.973 に答える
0

おそらく、確実に知るためにプロセスからストリームを読み取る必要があるエラーがありました

于 2012-05-03T18:29:35.990 に答える