[英]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.Compression或SharpzipLib ? 您可以查找更多信息,並通過塊下載。
這對我有用:
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.