コマンド ラインから次のコマンドを実行すると、リモート ユーザーとして 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 に問題を引き起こしますか?