簡體   English   中英

用C#解壓縮文件(使用winzip命令行)

[英]Unzip files in C# (using winzip command line)

我正在嘗試創建程序來解壓縮文件。 我需要使用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,因為只有它為我的文件提供編碼。 我嘗試使用DotNetZip,並且在uziping程序中拋出了無法解壓縮的異常,因為庫無法操作此文件。

引號包含整個路徑,包括驅動器號"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"

並創建一個空白郵政編碼。

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

很抱歉添加為答案(我目前沒有足夠的代表發表評論),但希望這會有所幫助。

您需要使用winzip命令行的原因是什么? 您是否可以改用離子zip( http://dotnetzip.codeplex.com/-也可以通過Visual Studio中的NuGet獲得)。 我已經用它幾次壓縮文件了,我也知道它也能解壓縮。

我可以看到不使用winzip命令行的好處是,在解壓縮過程中,不會在屏幕上彈出命令提示符窗口。

否則,正如Noodles所建議的那樣,引號必須圍繞整個路徑,而不僅僅是包含空格的文件夾。

編輯:這里有一個類似的SO帖子: 通過Winzip及其cmd擴展名在C#中解壓縮文件

如果要執行任何操作,可以將流程類ProcessStartInfo.Arguments一起使用

您可以在以下位置看到更多信息:

我的問題是因為我不了解您想要的東西,為什么不使用system.IO.CompressionSharpzipLib 您可以查找更多信息,並通過塊下載。

這對我有用:

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();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM