質問

私はWindows XPマシン上でC ++でsystem()機能を経由してファイルを圧縮する7 - ジップを使用しようとしています。 私が試した:

(どのシステム(ことにフォーマット)は、受信したであろう)

"C:\Program Files\7-Zip\7z.exe" a -tzip "bleh.zip" "addedFile.txt"

エラーを吐いています

'C:\Program' is not recognized as an internal or external command, operable program or batch file.

私はいくつかの類似した代替案を試してみたが、まだ解決策を見つけていない。

私は、ユーザー限りは、7-Zipは、インストールされている、機能することができるようになりますように、そのインストールディレクトリからまっすぐにそれを実行しようとします。これは、家の中のユーティリティアプリケーションのためです。

編集: 要求されたように、これらはコードの実際の行です。

std::string systemString = "\"C:\\Program Files\\7-Zip\\7z.exe\" a -tzip \"" + outDir + projectName + ".zip" + "\" \"";
//...
std::string finalSystemString = systemString + *i + "\"";
system( finalSystemString.c_str() );

*iが追加取得される特定のファイルへのイテレータです。

役に立ちましたか?

解決

何かが最初の引数の前後に引用符をストリッピングされたように、

それが見えます。あなたは試してみて、この問題を解決するために、余分な引用符で遊んことができ、またはあなたは、Win32 API <のhref = "http://msdn.microsoft.com/en-で7z.exeのためにMS-DOS互換の短いパス名を取得することができます私たち/ライブラリ/ aa364989(VS.85).aspxの」RELを= "nofollowをnoreferrer"> GetShortPathName の

短いパスにスペースを持っていないだろう、それは次のようになります "C:\ PROGRA〜1 \ 7-ZIPの\ 7Z.EXE"

他のヒント

あなたは、スペース、すなわち ":\プログラム\ファイル\ 7-ジップの\ 7z.exe C" を脱出しようとしたことがありますか?私はシステムの詳細を知らないが、それは、うまくいくかもしれない()。

scroll top