0

私はこのようなものを実行します:

string exec = @"/k" + @"7za.exe a -tzip " + name + ".zip \"" + name + "\"";
processStarter ps.run(exec);

startInfo 設定:

        startInfo.WorkingDirectory = workingDir;
        startInfo.FileName = exe;
        startInfo.UseShellExecute = false;
        startInfo.RedirectStandardOutput = true;

これにより、コマンドラインと 7zip 実行可能ファイルを含むフォルダーが圧縮されます。起動されたフォームの winform アプリは正常に動作し、zip して次の行に移動しますが、いくつかの引数を指定して cmd からアプリを起動すると、この行をデバッグするときにプログラムがハングします。適切な zip アーカイブを作成しますが、プログラムは次の行に進みません。

助けていただければ幸いです。

4

2 に答える 2

0

zip情報からzip.exeを使用しているときに同様の問題が発生しています。現在、私は削除する場所にいます

startInfo.UseShellExecute = false;
startInfo.RedirectStandardOutput = true;

行とそれはすべて魔法のように機能します。私はまだ調査中であり、解決策と理由が見つかったら、この回答を必ず編集します。

編集:

親愛なる友人、私の問題は、標準出力バッファがいっぱいになり、操作が続行zip.exe -qできなくなることでした。サイレントモードで動作し、エラーの書き込みを停止するオプションを使用しました。これにより、問題が修正され、問題の理由が示されました。あなたと同じ。

于 2016-12-20T10:45:29.407 に答える
0

/K は、CMD インスタンスが実行を終了しても終了しないように指示します。これを /C に置き換える必要があります。これは、CMD の組み込みヘルプ (CMD /?) からのこのガイダンスです。

/C      Carries out the command specified by string and then terminates
/K      Carries out the command specified by string but remains

コマンドを次のように更新する必要があります。

@"/C" + @"7za.exe a -tzip " + name + ".zip \"" + name + "\""; 
于 2012-08-24T19:11:39.293 に答える