0

ファイルを解凍するプログラムを作成しようとしています。winzip コマンドラインを使用する必要があります。引数コマンドを cmd に送信しようとしましたが、cmd がコマンドを認識していなかったため、機能しませんでした。コマンドを手動で貼り付けると、機能します。

var process = new ProcessStartInfo("cmd.exe");
var command = "/c WZUNZIP -spassword" + "\""+ "C:\my path\file.zip" + "\"" + " " + "\"" + "C:\my path" + "\"";
process.UseShellExecute = false;
process.Arguments = command;
Process.Start(process);

.bat ファイルを作成してプログラムでこのファイルを実行しようとしましたが、以前と同様に、プログラムで実行して手動で起動すると機能しませんでした。

start cmd.exe /c WZUNZIP -spassword "C:\my path\file.zip" "C:\my path"
var process = new ProcessStartInfo("cmd.exe", pathToBatch);
Process.Start(process);

おそらく、C# で .bat ファイルを実行する最良の方法です。

ファイルのエンコードを提供するのは winzip だけなので、winzip を使用する必要があります。DotNetZip を使用しようとしましたが、uzip 中に、ライブラリがこのファイルを操作できないため、解凍できないという例外がスローされました。

4

4 に答える 4

0

引用符は、ドライブ文字を含むパス全体に適用されます"c:\some folder\some file.zip"


解凍するには

Set objShell = CreateObject("Shell.Application")
Set Ag=Wscript.Arguments
set WshShell = WScript.CreateObject("WScript.Shell")

Set DestFldr=objShell.NameSpace(Ag(1))
Set SrcFldr=objShell.NameSpace(Ag(0))
Set FldrItems=SrcFldr.Items
DestFldr.CopyHere FldrItems, &H214
Msgbox "Finished"

そして圧縮する

Set objShell = CreateObject("Shell.Application")
Set Ag=Wscript.Arguments
set WshShell = WScript.CreateObject("WScript.Shell")

Set SrcFldr=objShell.NameSpace(Ag(1))
Set DestFldr=objShell.NameSpace(Ag(0))
Set FldrItems=SrcFldr.Items
DestFldr.CopyHere FldrItems, &H214
Msgbox "Finished"

空のzipを作成します。

Set Ag=Wscript.Arguments
Set fso = CreateObject("Scripting.FileSystemObject")
Set ts = fso.OpenTextFile(Ag(0), 8, vbtrue)
BlankZip = "PK" & Chr(5) & Chr(6)
For x = 0 to 17
    BlankZip = BlankZip & Chr(0)
Next
ts.Write BlankZip
于 2014-08-02T22:00:50.790 に答える
0

何かを実行したい場合は、 ProcessStartInfo.Argumentsでプロセス クラスを使用できます。

あなたはでもっと見ることができます:

そして、私の質問は、あなたが何を望んでいるのか理解できないためです。なぜsystem.IO.CompressionまたはSharpzipLibを使用しないのですか? 詳細情報を検索して、ナゲットでダウンロードできます。

于 2014-08-02T23:11:44.087 に答える
0

これが私にとってうまくいくものです:

System.Diagnostics.ProcessStartInfo procStartInfo = new System.Diagnostics.ProcessStartInfo("cmd", @"/c  WZUNZIP.EXE -ye -o " + zipPath + " " + ExtractedFilesLocation);
            procStartInfo.UseShellExecute = false;
            System.Diagnostics.Process proc = new System.Diagnostics.Process();
            proc.StartInfo = procStartInfo;
            proc.Start();
            proc.WaitForExit();
于 2015-01-29T13:33:07.217 に答える
0

回答として追加して申し訳ありません(現在、コメントを投稿するのに十分な担当者がいません)が、これが役立つことを願っています.

winzip コマンド ラインを使用する必要がある理由は何ですか? 代わりに ionic zip を使用できますか ( http://dotnetzip.codeplex.com/ - Visual Studio の NuGet からも取得可能)。ファイルを圧縮するために数回使用しましたが、解凍も同様です。

winzip コマンド ラインを使用しない利点は、解凍中にコマンド プロンプト ウィンドウが画面に表示されないことです。

それ以外の場合は、Noodles が示唆しているように、スペースを含むフォルダーだけでなく、パス全体を引用符で囲む必要があります。

編集: ここに同様の SO 投稿があります: Winzip とその cmd 拡張子を介して C# でファイルを解凍します。

于 2014-08-02T22:27:40.977 に答える