我正在尝试创建解压缩文件的程序。我需要使用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);
Mayby你知道,在C#中执行.bat文件的最佳方法。
我需要使用winzip,因为它只为我的文件提供编码。我尝试使用DotNetZip并在uziping程序期间抛出异常,它无法解压缩,因为库无法操作此文件。
答案 0 :(得分: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
答案 1 :(得分:0)
道歉添加作为答案(我当然没有足够的代表发布评论),但希望这会有所帮助。
您需要使用winzip命令行的原因是什么?你可以使用离子拉链(http://dotnetzip.codeplex.com/ - 也可以通过Visual Studio中的NuGet获得)。我已经用了几次来压缩文件,我也知道它也会解压缩。
我可以看到不使用winzip命令行的好处是,在解压缩过程中,您没有在屏幕上弹出命令提示符窗口。
否则,正如Noodles建议的那样,引号必须围绕整个路径,而不仅仅是包含空格的文件夹。
编辑:此处有类似的SO帖子:unzip file in C# via Winzip and its cmd extension
答案 2 :(得分:0)
如果您想执行任何操作,可以将流程类与 ProcessStartInfo.Arguments 一起使用。
您可以在以下位置查看更多信息:
我的问题是因为我不明白你想要什么, 为什么不使用 system.IO.Compression 或 SharpzipLib ?您可以查看更多信息并使用金块下载。
答案 3 :(得分: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();